目錄
- 一、數(shù)據(jù)庫的配置
- 二、Django ORM語法
- 1.模型之間的三種關(guān)系:一對一,一對多,多對多。
- 2.模型常用的字段類型參數(shù)
- 3.Field重要參數(shù)
- 4.表(模型)的創(chuàng)建
- 5.單表操作
- 1.創(chuàng)建記錄
- 2.修改記錄
- 3.刪除記錄
- 4.查詢記錄
- 6.多表操作(多對多關(guān)系)
- 7.聚合查詢和分組查詢
- 8.F查詢和Q查詢
- 9.QuerySet的惰性機(jī)制
一、數(shù)據(jù)庫的配置
1 django默認(rèn)支持sqlite,mysql, oracle,postgresql數(shù)據(jù)庫。
<1> sqlite
django默認(rèn)使用sqlite的數(shù)據(jù)庫,默認(rèn)自帶sqlite的數(shù)據(jù)庫驅(qū)動(dòng) , 引擎名稱:django.db.backends.sqlite3
<2> mysql
引擎名稱:django.db.backends.mysql
2 mysql驅(qū)動(dòng)程序
- MySQLdb(mysql python)
- mysqlclient
- MySQL
- PyMySQL(純python的mysql驅(qū)動(dòng)程序)
3 在django的項(xiàng)目中會默認(rèn)使用sqlite數(shù)據(jù)庫,在settings里有如下設(shè)置:
二、Django ORM語法
1.模型之間的三種關(guān)系:一對一,一對多,多對多。
一對一:實(shí)質(zhì)就是在主外鍵(author_id就是foreign key)的關(guān)系基礎(chǔ)上,給外鍵加了一個(gè)UNIQUE=True的屬性;
一對多:就是主外鍵關(guān)系;(foreign key)
多對多:(ManyToManyField) 自動(dòng)創(chuàng)建第三張表(當(dāng)然我們也可以自己創(chuàng)建第三張表:兩個(gè)foreign key)
2.模型常用的字段類型參數(shù)
參數(shù) | 描述 |
---|---|
CharField | 字符串字段, 用于較短的字符串., 要求必須有一個(gè)參數(shù) maxlength , 用于從數(shù)據(jù)庫層和Django校驗(yàn)層限制該字段所允許的最大字符數(shù). |
IntegerField | 用于保存一個(gè)整數(shù). |
FloatField | 一個(gè)浮點(diǎn)數(shù). 必須 提供兩個(gè)參數(shù) :max_digits(總位數(shù)(不包括小數(shù)點(diǎn)和符號))和decimal_places(小數(shù)位數(shù)) |
AutoField | 添加記錄時(shí)它會自動(dòng)增長 |
TextField | 一個(gè)容量很大的文本字段. |
BooleanField | 用于保存布爾值 |
EmailField | 一個(gè)帶有檢查Email合法性的 CharField |
DateField | 一個(gè)日期字段 |
DateTimeField | 一個(gè)日期時(shí)間字段 |
ImageField | 校驗(yàn)上傳對象是否是一個(gè)合法圖片 |
URLField | 用于保存 URL |
具體描述:
<1> CharField
#字符串字段, 用于較短的字符串.
#CharField 要求必須有一個(gè)參數(shù) maxlength, 用于從數(shù)據(jù)庫層和Django校驗(yàn)層限制該字段所允許的最大字符數(shù).
<2> IntegerField
#用于保存一個(gè)整數(shù).
<3> FloatField
# 一個(gè)浮點(diǎn)數(shù). 必須 提供兩個(gè)參數(shù):
#
# 參數(shù) 描述
# max_digits 總位數(shù)(不包括小數(shù)點(diǎn)和符號)
# decimal_places 小數(shù)位數(shù)
# 舉例來說, 要保存最大值為 999 (小數(shù)點(diǎn)后保存2位),你要這樣定義字段:
#
# models.FloatField(..., max_digits=5, decimal_places=2)
# 要保存最大值一百萬(小數(shù)點(diǎn)后保存10位)的話,你要這樣定義:
#
# models.FloatField(..., max_digits=19, decimal_places=10)
# admin 用一個(gè)文本框(
)表示該字段保存的數(shù)據(jù).
<4> AutoField
# 一個(gè) IntegerField, 添加記錄時(shí)它會自動(dòng)增長. 你通常不需要直接使用這個(gè)字段;
# 自定義一個(gè)主鍵:my_id=models.AutoField(primary_key=True)
# 如果你不指定主鍵的話,系統(tǒng)會自動(dòng)添加一個(gè)主鍵字段到你的 model.
<5> BooleanField
# A true/false field. admin 用 checkbox 來表示此類字段.
<6> TextField
# 一個(gè)容量很大的文本字段.
# admin 用一個(gè)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
