資料庫型別:
autofield :自動增長的主鍵id,通常不用指定,不指定時django會自動建立屬性名為id的自動增長屬性
booleanfield :布林字段,值為true或false。#許可權管理
nullbooleanfield :布林字段,支援null、true、false三種值。
(default=true設定預設值)
charfield :字串。#->md5+鹽值生成加密資料 max_length 必須引數
urlfield :儲存url的字段。
emailfield :email欄位,並會檢查是否為合法郵箱位址。
slugfield :儲存只包含字母、數字、下劃線的字串。
textfield :大文字字段,一般超過4000個字元時使用。
(max_length=字元長度)charfield的必須引數其他為可選引數
integerfield :整數。
decimalfield :十進位制浮點數。(max_digits=總位數, decimal_places=小數字數)
floatfield :浮點數。
datefield :日期。
#auto_now:每次更新該資料時候,這個字段自動更新為當前時間,文章發布或修改
#auto_now_add:每次建立該資料時候,這個字段自動儲存為當前時間,使用者註冊時間
timefield :時間。
datetimefield :日期時間。
([auto_now=false, auto_now_add=false])引數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤。
genericipaddressfield :ipv4或ipv6位址的字串兩個預設引數 用於判斷此ip為爬蟲時將其封禁
protocol :ip協議,ipv4或ipv6,預設both
為全選
unpack_ipv4 :解析ip位址,只有當協議為both
時才可以使用
資料庫引數:
primary_key :該值為true時,則該字段會成為模型的主鍵字段,一般作為autofield的選項使用。
(預設為false)
default :預設值。
max_length :表示最大字元個數
max_digits :表示總位數
decimal_places :表示小數字數
verbose_name :給當前欄位起詳細的名字(admin中顯示的欄位名稱)
auto_now :該值為true時,每次在儲存資料物件時自動設定該字段為當前時間,自動更新最後一次修改時間
(預設為false)
auto_now_add :該值為true時,該欄位設定在第一次資料物件建立時,可以記錄當前字段建立的時間值
(預設為false)
unique :該值為true時, 這個欄位在表中必須有唯一值,這個欄位還會在模型層驗證儲存的資料是否唯一。
unique_for_date :資料庫中欄位【日期】部分是否可以建立唯一索引
unique_for_month:資料庫中欄位【月】部分是否可以建立唯一索引
unique_for_year :資料庫中欄位【年】部分是否可以建立唯一索引
(預設為false)
null :該值為true時,表示允許為空。
(預設為false)
blank :該值為true時,則對應表單字段也允許為空。
(預設為false)
(null是資料庫範疇的概念,blank是對應表單驗證範疇的)
(對於字串型別的資料字段,django使用空字串代表空值("")而不是null值,所以要避免使用null)
db_column :欄位的名稱,如果未指定,則使用屬性的名稱。
db_index :欄位的索引,若值為true, 則在表中會為此字段建立索引。
(預設為false)
help_text :admin中該字段的提示資訊
editable :該值為false時,那麼這個欄位將不允許在admin中被編輯
(預設為true)
choices :下拉列表,需要在類中自定義乙個二個元組資料的巢狀型列表或元組,也支援分類的寫法:三層巢狀
(二元祖中第乙個值為儲存在資料庫中,第二個值為展示在下拉列表中)
(該值一旦被設定,表單樣式會顯示下拉選擇框,而不是文字框)
資料庫的元引數屬性:
abstract :abstract=true代表當前模型類為抽象基類,不會建立真正的資料表,只是為了其他模型類繼承使用
(不*****************************會)
orm對應的類裡面包含另乙個class meta:類,而meta類封裝了一些資料庫的資訊。主要字段如下:
資料庫關係:
1 一對一關係
models.ontoonefield()
定義在哪乙個類都可以 (引數為1.2.3)
2 一對多關係
models.forignkey() # 外來鍵約束
定義在多類中 (引數為1.2.3.4.5)
3 多對多關係
models.manytomanyfield()
定義在哪乙個類都可以 (引數為1.4.5.6.7.8.9)
在使用manytomanyfield欄位時,django將自動生成一張表來管理多對多的關聯關係
資料庫關係引數:
1. to :設定要關聯的表
to_field :設定要關聯的表的字段
3. on_delete :當刪除關聯表中的資料時,當前表與其關聯的行的行為。
related_name :反向操作時,使用的欄位名,用於代替原反向查詢時的』表名_set』。
5. related_query_name :反向查詢操作時,使用的連線字首,用於替換表名。
6. through :手動建立第三張表來管理多對多關係,通過through來指定第三張表的表名。
7. db_table :預設建立第三張表時,資料庫中表的名稱。
8. symmetrical :僅用於多對多自關聯時,指定內部是否建立反向操作的字段。預設為true。
9. through_fields :設定關聯的字段。
外來鍵:一對一及一對多關係中必須設定 on_delete 屬性用來描述當關聯資料被刪除時的操作
在設定外來鍵時,需要通過on_delete選項指明主表刪除資料時,對於外來鍵引用表資料如何處理。
在django.db.models中包含了可選常量:on_delete = models.
cascade(級聯) :連同刪除 刪除主表資料時連同一起刪除外來鍵表中資料
protect(保護) :阻止刪除 通過丟擲protectederror受保護異常來阻止刪除主表中被外來鍵應用的資料
set_null(設定為null) :與之關聯的值設定為null(前提外來鍵字段需要設定為可空)
set_default(設定為預設值) :與之關聯的值設定為預設值(前提外來鍵字段需要設定預設值)
do_nothing(不做任何操作) :如果資料庫前置指明級聯性,此選項會丟擲integrityerror完整性異常
db_constraint(約束) :是否在資料庫中建立外來鍵約束,預設為true。
set()(設定) :與之關聯的值設定為指定值,或者與之關聯的值設定為可執行物件的返回值
models.set(值) 或者呼叫特定方法 models.set(可執行物件函式名)
多對多關聯關係的三種方式:
方式一:自行建立第三張表
方式二:通過manytomanyfield自動建立第三張表
方式三:設定manytomanyfield並指定自行建立的第三張表
待了解******************************
Django 中資料庫字段型別彙總
autofield 乙個根據可用ids,自增的乙個整型,一般不會用到這個型別,應為定義auto increment的字段具備此功能 bigintegerfield64位整形 binaryfield二進位制型別,注意這個型別的資料不能對它進行查詢過濾 booleanfieldtrue false,長用...
django系列4 資料庫字段約束
字段約束是在搭建資料庫時,最欄位進行的額外約束。1 null 預設為false,當設定為true時,該欄位插入資料時可以為空,使用null進行填充。2 blank 預設為false,為false時在admin後台中表單必須要填內容,為true時可以允許表單為空。一般與null true或de t連用...
Django資料庫模型的字段型別總結
v models.charfield max length none options varchar v models.emailfield max length 75,options varchar v models.urlfield verify exists true,max length 2...