Django之M層的字段屬性和選項以及查詢函式

2021-09-10 07:50:06 字數 3931 閱讀 2297

1.autofield

自動增長的integerfield,通常不用指定,不指定時django會自動建立屬性名為id的自動增長屬性。

2.booleanfield

布林字段,值為true或false。

3.nullbooleanfield

支援null、true、false三種值。

4.charfield(max_length=最大長度)

字串。引數max_length表示最大字元個數。

5.textfield

大文字字段,一般超過4000個字元時使用。

6.integerfield

整數7.decimalfield(max_digits=none, decimal_places=none)

十進位制浮點數。引數max_digits表示總位。引數decimal_places表示小數字數。

精度比floatfield高

8.floatfield

浮點數。引數同上

9.datefield:([auto_now=false, auto_now_add=false])

日期型1)引數auto_now表示每次儲存物件時,自動設定該字段為當前時間,用於"最後一次修改"的時間戳,它總是使用當前日期,預設為false。

2) 引數auto_now_add表示當物件第一次被建立時自動設定當前時間,用於建立的時間戳,它總是使用當前日期,預設為false。

3)引數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤。

1.default

預設值。設定預設值。

2.primary_key

若為true,則該字段會成為模型的主鍵字段,預設值是false,一般作為autofield的選項使用。

3.unique

如果為true, 這個欄位在表中必須有唯一值,預設值是false。

4.db_index

若值為true, 則在表中會為此字段建立索引,預設值是false。

5.db_column

欄位的名稱,如果未指定,則使用屬性的名稱。

6.null

如果為true,表示允許為空,預設值是false。

7.blank

如果為true,則該字段允許為空白,預設值是false。

注意:null是資料庫範疇的概念,blank是後台管理頁面表單驗證範疇的。

三、查詢函式:

1.get例項:

例:查詢圖書id為3的圖書資訊

b=bookinfo.objects.get(id=3)
2.all方法示例:例:查詢圖書所有資訊

b=bookinfo.object.all()
3.filter方法示例:條件格式:模型類屬性名__條件名=值

a)判等 條件名:exact 。

例:查詢編號為1的圖書。

b=bookinfo.objects.get(id__exact=1)
b)模糊查詢例1:查詢書名包含』傳』的圖書。contains

b=bookinfo.objects.filter(btitle__contains='傳')
例2:查詢書名以』部』結尾的圖書endswith開頭:startswith

b=bookinfo.objects.filter(btitle__endswith='部')
c)空查詢 isnull例:查詢書名不為空的圖書。isnull

b=bookinfo.objects.filter(btitle__isnull=false)
d)範圍查詢 in例:查詢id為1或3或5的圖書。

b=bookinfo.objects.filter(id__in=[1,3,5])
e)比較查詢 gt(greate than) lt(less than) gte(equal) 大於等於lte 小於等於例:查詢id大於3的圖書。gt

b=bookinfo.objects.filter(id__gt=3)
f)日期查詢 year例1:查詢2023年發表的圖書。

bookinfo.objects.filter(bpub_date__year=1980)
例2:查詢2023年1月1日後發表的圖書。

from datetime import date

b=bookinfo.objects.filter(bpub_date__gt=date(1980,1,1))

exclude方法示例:例:查詢id不為3的圖書資訊。

b=bookinfo.objects.exclude(id=3)
order_by方法示例:作用:進行查詢結果進行排序。

例1:查詢所有圖書的資訊,按照id從小到大進行排序。

b=bookinfo.objects.all().order_by(『id』)
例2:查詢所有圖書的資訊,按照id從大到小進行排序。

b=bookinfo.objects.all().order_by(『-id』)
b=bookinfo.objects.filter(id__gt=3).order_by(『-bread』)
1) 惰性查詢:只有在實際使用查詢集中的資料的時候才會發生對資料庫的真正查詢。

books=bookinfo.objects.all()

books

2) 快取:當使用的是同乙個查詢集時,第一次使用的時候會發生實際資料庫的查詢,然後把結果快取起來,之後再使用這個查詢集時,使用的是快取中的結果。

books1=bookinfo.objects.filter(id__gt=3)

[x for x in books1]

可以對乙個查詢集進行取下標或者切片操作來限制查詢集的結果。

對乙個查詢集進行切片操作會產生乙個新的查詢集下標不允許為負數。

取出查詢集第一條資料的兩種方式:

Django框架 模型層 字段屬性和選項

django根據屬性的型別確定以下資訊 django會為表建立自動增長的主鍵列,每個模型只能有乙個主鍵列,如果使用選項設定某屬性為主鍵列後django不會再建立自動增長的主鍵列。預設建立的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。注意 pk是主鍵的別名,若主鍵名為id2,...

Django 模型層字段的choice引數

choice屬性用來限制使用者選擇的範圍,例如 性別的選擇 男,女 models.py from django.db import models class course models.model 課程表 level models.charfield max length 10,choice 1 初...

Django學習筆記(2)字段屬性和選項

1 不能是python保留關鍵字 2 不允許使用連續的下劃線 3 定義屬性時需要制定字段型別,通過字段型別的引數指定選項,語法如下 屬性名 models.欄位型別 選項 引入django.db.models from django.db import models autofield 自動增長的in...