一起學Django 六 模型類字段和選項

2021-10-06 18:24:54 字數 1817 閱讀 8338

通過上面的學習,我們知道了django專案中每乙個模型類對應為資料庫中的一張表,類中沒乙個屬性對應為表中的每乙個字段。資料庫的只是告訴我們資料庫在建立表字段時是需要制定表字段的資料型別的,那我們django可以幫我實現字段資料型別的限制嗎?

答案是yes!!!

我們就通過這一篇文章來了解一下模型類中字段的型別和選項

django中通過特定的類,來實現資料庫中欄位資料型別的效果,下面我們看看都有哪些類,以及他們實現哪種型別

欄位類描述

autofield

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

booleanfield

布林字段,值為true或false

nullbooleanfield

支援null、true、false三種值

charfield(max_length=字元長度)

字串textfield

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

integerfield

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

十進位制浮點數。專門用於記錄金額,max_digits表示總長度,decimal_places表示小數部分長度

floatfield

浮點數datefield[auto_now=false, auto_now_add=false])

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

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

auto_now_add和auto_now是相互排斥的,組合將會發生錯誤

timefield

時間,引數同datefield

datetimefield

日期時間,引數同datefield

filefield

上傳檔案字段

imagefield

繼承於filefield,對上傳的內容進行校驗,確保是有效的

選項是用來限定該欄位應該有哪些特性,其實有點類似於資料庫中的約束,但也僅僅是有點點類似,因為django提供的選項非常之多

選項名描述

null

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

blank

使用bool值true或false,如果設定為true,表示允許為空

請注意,這不同於null。 null純粹是與資料庫有關的,而空白是與驗證有關的。 如果欄位的空白為true,則表單驗證將允許輸入乙個空值。 如果欄位的空白為false,則需要該欄位。

db_column

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

db_index

資料庫索引,如果設定為true,將會為該字段建立索引

db_tablespace

如果此字段已建立索引,則用於該字段的索引的資料庫表空間的名稱。 預設值是專案的default_index_tablespace設定(如果已設定)或模型的db_tablespace(如果有)。 如果後端不支援索引的表空間,則忽略此選項。

default

預設值,可以使乙個只或者是乙個可呼叫的物件

primary_key

主鍵,如果設定為true,該字段將被設定為模型類的主鍵

unique

如果設定為true,該欄位必須在整個表中保持值唯一,類似於唯一約束,除此以外還有(unique_for_date、unique_for_year、unique_for_month)

一起學Makefile(六)

命令的回顯 通常,make在執行命令之前都會把執行的命令進行輸出,例如 關閉命令回顯有以下幾種方式 每個需要關閉回顯的命令列之前加上 符號 執行make時機上引數 s 或 slient進製所有執行命令的顯示。在makefile中使用沒有以來的特殊目標時,slient也可以禁止所有命令的回顯。命令的執...

一起學演算法

我堅信,機會永遠屬於有準備的人,其羨慕他人的成功,不如從此刻起,積累足夠多的知識和面試經驗,為將來進入更好的公司做好充分的準備!演算法崗是現在最火的崗位,這個崗位要求對oi演算法非常熟悉。常見的oi演算法有 模擬 字首和 差分 高精度計算 排序 貪心 分治 二分查詢 廣度搜尋 深度搜尋 字串相關演算...

一起學Makefile(一)

make和makefile makefile檔案幫助我們記錄了整個專案工程的所有需要編譯的檔案列表,這樣我們在編譯時僅需要輸入簡單的make命令就能編譯出我們期望的結果。makefile檔案反映了整個專案中各個模組的依賴關係,這樣我們改動了某些原始檔以後,僅需簡單的輸入make命令,make工具就會...