ORM 之常用查詢、欄位型別、約束
阿新 • • 發佈:2021-01-08
1. orm常用欄位型別
# ### orm中的常用欄位型別 ''' <1> CharField 字串欄位, 用於較短的字串. CharField 要求必須有一個引數 maxlength, 用於從資料庫層和Django校驗層限制該欄位所允許的最大字元數. <2> IntegerField #用於儲存一個整數. <3> FloatField 一個浮點數. 必須 提供兩個引數: 引數 描述 max_digits 總位數(不包括小數點和符號) decimal_places 小數位數 舉例來說, 要儲存最大值為 999 (小數點後儲存2位),你要這樣定義欄位: models.FloatField(..., max_digits=5, decimal_places=2) 要儲存最大值一百萬(小數點後儲存10位)的話,你要這樣定義: models.FloatField(..., max_digits=19, decimal_places=10) admin 用一個文字框(<input type="text">)表示該欄位儲存的資料. <4> AutoField 一個 IntegerField, 新增記錄時它會自動增長. 你通常不需要直接使用這個欄位; 自定義一個主鍵:my_id=models.AutoField(primary_key=True) 如果你不指定主鍵的話,系統會自動新增一個主鍵欄位到你的 model. <5> BooleanField A true/false field. admin 用 checkbox 來表示此類欄位. <6> TextField 一個容量很大的文字欄位. admin 用一個 <textarea> (文字區域)表示該欄位資料.(一個多行編輯框). <7> EmailField 一個帶有檢查Email合法性的 CharField,不接受 maxlength 引數. <8> DateField 一個日期欄位. 共有下列額外的可選引數: Argument 描述 auto_now 當物件被儲存時,自動將該欄位的值設定為當前時間. 通常用於表示 "last-modified" 時間戳. auto_now_add 當物件首次被建立時,自動將該欄位的值設定為當前時間.通常用於表示物件建立時間. (僅僅在admin中有意義...) <9> DateTimeField 一個日期時間欄位. 類似 DateField 支援同樣的附加選項. '''
2. 常用欄位約束
# ### orm中的常用欄位約束 ''' (1)null 如果為True,Django 將用NULL 來在資料庫中儲存空值。 預設值是 False. (1)blank 如果為True,該欄位允許不填。預設為False。 要注意,這與 null 不同。null純粹是資料庫範疇的,而 blank 是資料驗證範疇的。 如果一個欄位的blank=True,表單的驗證將允許該欄位是空值。如果欄位的blank=False,該欄位就是必填的。 (2)default 欄位的預設值。可以是一個值或者可呼叫物件。如果可呼叫 ,每有新物件被建立它都會被呼叫。 (3)primary_key 如果為True,那麼這個欄位就是模型的主鍵。如果你沒有指定任何一個欄位的primary_key=True, Django 就會自動新增一個IntegerField欄位做為主鍵,所以除非你想覆蓋預設的主鍵行為, 否則沒必要設定任何一個欄位的primary_key=True。 (4)unique 如果該值設定為 True, 這個資料欄位的值在整張表中必須是唯一的 (5)choices 由二元組組成的一個可迭代物件(例如,列表或元組),用來給欄位提供選擇項。 如果設定了choices ,預設的表單將是一個選擇框而不是標準的文字框,而且這個選擇框的選項就是choices 中的選項。 '''
3. 13個常用查詢api介面
# 1.all 查詢所有資料 # 2.count 獲取資料總數 # 3.first: 返回的第一條資料物件 # 4.last: 返回的最後一個數據物件 # 5.order_by 排序(正序) # 6.order_by 排序(倒序) reverse # 7.filter 按條件查詢[相當於where] 返回的queryset物件 # 8.exists(): 如果QuerySet包含資料,就返回True,否則返回False # 9.get 返回一個模型類物件 [等價於資料物件] # 10.exclude: 排除符合條件的物件,返回的依然是queryset物件 [表達不等於除了的概念] # 11.values 查詢某個欄位值,返回字典 # 12.values_list 查詢某個欄位值,返回元組 # 13.distinct 去重 # 鏈式操作(連貫操作)
4. 其他常用查詢
# 範圍查詢 # in => __in # > => __gt # >= => __gte # < => __lt # <= => __lte # between .. and .. => __range=[100,200] # like => __contains="金" # like模糊查詢 # __contains="金" # like(忽略大小寫) # __icontains="a" # __startswith="aa" 以..開頭 # __endswith="bb" 以..結尾 # 針對於date型別 # __year 過濾日期欄位的年份 # __month 過濾日期欄位的月份 # __day 過濾日期欄位的日 # 正則 __regex="^金.*$"