資料庫字段 django

2021-09-19 15:25:14 字數 3946 閱讀 5450

資料庫型別:

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...