奠定項目基石:Model

環(huán)境

虛擬環(huán)境+python3.5.2 + Django1.11
安裝虛擬環(huán)境的原因是邪乍,在實際的項目開發(fā)過程中,我們可能需要維護多個項目产弹,甚至同時開發(fā)不同的項目剑勾,而這些項目的依賴又不同,如果不同的依賴都安裝在系統(tǒng)環(huán)境中朗涩,可能會出現(xiàn)意想不到的沖突忽孽,所以我們創(chuàng)建了可以獨立于系統(tǒng)的Python運行環(huán)境和包管理環(huán)境,在實際的開發(fā)過程中谢床,我們針對不同的項目分別創(chuàng)建獨立的虛擬環(huán)境兄一。

Model

Django是基于MVC(Model-View-Controller)模式的框架,其中的M就是Model層识腿。


MVC.png

Model在整個項目中是直接和數(shù)據(jù)庫打交道的一層出革,所以數(shù)據(jù)處理的部分都放在這一層操作,而且這一層也是整個項目的基石渡讼,因為如果數(shù)據(jù)層出現(xiàn)問題骂束,后面的開發(fā)則很難進行下去,或者說沒有意義成箫,所以這一層很重要展箱。
這一層有幾個比較重要的模塊:
Models:模型定義相關(guān)的使用說明,需要配置的是字段類型蹬昌,meta配置等混驰;
QuerySets:在Model的基礎(chǔ)上怎么查看數(shù)據(jù),有哪些接口可以用皂贩,以及如何更進一步進行定制栖榨;
Model instances:Model的實例,一個實例可以理解為表中的一條記錄明刷;
Migrations:在開發(fā)階段婴栽,我們會不斷的調(diào)整表的結(jié)構(gòu),這部分就是用來做表結(jié)構(gòu)的調(diào)整的辈末。
Advanced:這里涉及如何定義Manager(也就是常用的Model.objects.all中的objects)愚争,以及如果不爽ORM的查詢限制映皆,但是又想用ORM對象的映射,可以考慮使用原生的SQL准脂。
Other:這一部分有兩塊劫扒,一個是Legacy databases(遺留數(shù)據(jù)庫),想象下狸膏,有人甩給你一個已有的CMS項目沟饥,要改成Django的,你拿到表湾戳,直接根據(jù)生成Model贤旷。之后你再花幾分鐘寫寫admin部分代碼,CMS出來了砾脑,爽不爽幼驶。另外一部分就是Optimize database access。

數(shù)據(jù)關(guān)系模型

數(shù)據(jù)關(guān)系模型.png

這個模型是拿到一個項目之后要先進行需求分析韧衣,然后從需求中整理而來盅藻。而對于內(nèi)容或者說數(shù)據(jù)驅(qū)動的項目來說,設(shè)計好模型是成功的一半畅铭,因為后續(xù)的所有操作都是基于Model的氏淑。

ORM

ORM(Object Relational Mapping):對象關(guān)系映射,大白話解釋就是把我們定義的對象(類)映射到對應(yīng)的數(shù)據(jù)庫表上硕噩,所以O(shè)RM其實就是代碼層面對于數(shù)據(jù)庫表和關(guān)系的一種抽象假残。
簡單來說,就是繼承了Django的Model炉擅,然后定義了對應(yīng)的字段辉懒,Django 會幫我們把Model對應(yīng)到數(shù)據(jù)庫的表上,Model中定義的屬性就對應(yīng)表的一個字段谍失,而對于有關(guān)聯(lián)關(guān)系的Model眶俩,比如用到了ForeignKey的Model,就是通過外鍵關(guān)聯(lián)的表快鱼。其中類中的屬性對應(yīng)數(shù)據(jù)表的字段仿便,屬性的類型對應(yīng)MySQL字段的類型,屬性定義時傳遞的參數(shù)定義了字段的其他屬性攒巍,比如長度,是否允許為空等荒勇。
所以柒莉,Model中字段的類型跟MySQL中字段的類型相對應(yīng)是ORM中基本的規(guī)則,我們只需要寫python的代碼沽翔,數(shù)據(jù)庫會根據(jù)ORM規(guī)則自動生成SQL語言兢孝,避免了復(fù)雜的SQL語句的書寫窿凤。

QuerySet的使用

在Model中,QuerySet是一個很重要的概念跨蟹。因為我們同數(shù)據(jù)庫的所有查詢以及更新交互都是通過它來完成的雳殊。
在Model層中,Django通過給Model增加一個objects屬性來提供數(shù)據(jù)操作的借口窗轩,當(dāng)我們用到它時夯秃,他會去DB中獲取數(shù)據(jù)。為什么是當(dāng)我們用到它時痢艺?

# 第一句是不會取數(shù)據(jù)庫中提取數(shù)據(jù)的仓洼,他只會生成一個object對象
posts = Post.objects.all()
# 當(dāng)真正用到它的時候,才會去數(shù)據(jù)庫中拿數(shù)據(jù)
available_posts = posts.filter(status=1)

其原因是QuerySet支持鏈式操作堤舒,如果每次執(zhí)行都要查詢數(shù)據(jù)庫的話色建,會存在性能問題。
同時舌缤,QuerySet還提供了很多供我們使用的接口箕戳,用來查詢數(shù)據(jù),如all国撵,filter等陵吸。
也就是說,Django 的ORM為了達到跟SQL語句同樣的表達能力卸留,給我們提供了各種各樣的接口走越。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耻瑟,隨后出現(xiàn)的幾起案子旨指,更是在濱河造成了極大的恐慌,老刑警劉巖喳整,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆构,死亡現(xiàn)場離奇詭異,居然都是意外死亡框都,警方通過查閱死者的電腦和手機搬素,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魏保,“玉大人熬尺,你說我怎么就攤上這事∥铰蓿” “怎么了粱哼?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長檩咱。 經(jīng)常有香客問我揭措,道長胯舷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任绊含,我火速辦了婚禮桑嘶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躬充。我一直安慰自己逃顶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布麻裳。 她就那樣靜靜地躺著口蝠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪津坑。 梳的紋絲不亂的頭發(fā)上妙蔗,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音疆瑰,去河邊找鬼眉反。 笑死,一個胖子當(dāng)著我的面吹牛穆役,可吹牛的內(nèi)容都是我干的寸五。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼耿币,長吁一口氣:“原來是場噩夢啊……” “哼梳杏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起淹接,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤十性,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后塑悼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劲适,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年厢蒜,在試婚紗的時候發(fā)現(xiàn)自己被綠了霞势。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡斑鸦,死狀恐怖愕贡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巷屿,我是刑警寧澤固以,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站攒庵,受9級特大地震影響嘴纺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浓冒,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一栽渴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稳懒,春花似錦闲擦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至或油,卻和暖如春寞忿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顶岸。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工腔彰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辖佣。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓霹抛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卷谈。 傳聞我的和親對象是個殘疾皇子杯拐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容