Django定義模型類(lèi)常用的屬性

字段類(lèi)型

  • AutoField:

     自動(dòng)增長(zhǎng)的IntegerField,通常不用指定,不指定時(shí)Django會(huì)自動(dòng)創(chuàng)建屬性名為id的自動(dòng)增長(zhǎng)屬性
    
  • BooleanField:

     布爾字段,值為T(mén)rue或False
    
  • NullBooleanField:

     支持Null、True、False三種值
    
  • CharField(max_length=字符長(zhǎng)度):

    字符串,參數(shù)max_length表示最大字符個(gè)數(shù)
    
  • TextField:

    大文本字段,一般超過(guò)4000個(gè)字符時(shí)使用
    
  • IntegerField:

    用于保存一個(gè)整數(shù)
    
  • PositiveIntegerField:

    類(lèi)似 IntegerField, 但取值范圍為非負(fù)整數(shù)(這個(gè)字段應(yīng)該是允許0值的…可以理解為無(wú)符號(hào)整數(shù))
    
  • SmallIntegerField:

    類(lèi)似 IntegerField, 不過(guò)只允許某個(gè)取值范圍內(nèi)的整數(shù)。(依賴數(shù)據(jù)庫(kù))
    
  • PositiveSmallIntegerField:

    正小整型字段,類(lèi)似 PositiveIntegerField,取值范圍較小(數(shù)據(jù)庫(kù)相關(guān))SlugField“Slug” 是一個(gè)報(bào)紙術(shù)語(yǔ)
    slug 是某個(gè)東西的小小標(biāo)記(短簽), 只包含字母,數(shù)字,下劃線和連字符。它們通常用于URLs。 若你使用 Django 開(kāi)發(fā)版本,你可以指定 maxlength。 若 maxlength 未指定, Django 會(huì)使用默認(rèn)長(zhǎng)度: 50,它接受一個(gè)額外的參數(shù)
    
  • FloatField:

    浮點(diǎn)型字段,必須提供兩個(gè)參數(shù),參數(shù)描述:
    max_digits:總位數(shù)(不包括小數(shù)點(diǎn)和符號(hào))
    decimal_places:小數(shù)位數(shù)。如:要保存最大值為 999 (小數(shù)點(diǎn)后保存2位),你
    要這樣定義字段:models.FloatField(…,max_digits=5,decimal_places=2),要保存最大值一百萬(wàn)(小數(shù)點(diǎn)后保存10位)的話,你要這樣定義:models.FloatField(…,max_digits=19, decimal_places=10)
    
  • DateField[auto_now=False, auto_now_add=False]):

    日期類(lèi)型,參數(shù)描述:
    
    注意:此類(lèi)型中不能設(shè)置 default 默認(rèn)值,因?yàn)樗cauto_now;auto_now_add是互斥的
    
    參數(shù)auto_now表示每次保存對(duì)象時(shí),自動(dòng)設(shè)置該字段為當(dāng)前時(shí)間,用于”最后一次修改”的時(shí)間戳,它總是使用當(dāng)前日期,默認(rèn)為false
    
    參數(shù)auto_now_add表示當(dāng)對(duì)象第一次被創(chuàng)建時(shí)自動(dòng)設(shè)置當(dāng)前時(shí)間,用于創(chuàng)建的時(shí)間戳,它總是使用當(dāng)前日期,默認(rèn)為false
    
    參數(shù)auto_now_add和auto_now是相互排斥的,組合將會(huì)發(fā)生錯(cuò)誤 TimeField:時(shí)間,參數(shù)同DateField 
    
  • DateTimeField:

    日期時(shí)間,參數(shù)同DateField
    注意:此類(lèi)型中不能設(shè)置 default 默認(rèn)值,因?yàn)樗cauto_now;auto_now_add是互斥的
    
  • TimeField:

    時(shí)間字段,類(lèi)似于 DateField 和 DateTimeField
    
  • EmailField:

    一個(gè)帶有檢查 Email 合法性的 CharField,不接受 maxlength 參數(shù)
    
  • GenericIPAddressField:

    一個(gè)字符串形式的 IP 地址, (如 “202.1241.30″)
    
  • URLField:

    用于保存 URL,若 verify_exists 參數(shù)為 True (默認(rèn)),給定的 URL會(huì)預(yù)先檢查是否存在(即URL是否被有效裝入且沒(méi)有返回404響應(yīng))
    
  • XMLField:

    XML字符字段,校驗(yàn)值是否為合法XML的 TextField,必須提供參數(shù):schema_path:校驗(yàn)文本的 RelaxNG schema 的文件系統(tǒng)路徑
    
  • FileField:

    一個(gè)文件上傳字段。 要求一個(gè)必須有的參數(shù): upload_to, 一個(gè)用于保存上載文件的本地文件系統(tǒng)路徑
    
  • FilePathField:

    選擇指定目錄按限制規(guī)則選擇文件,有三個(gè)參數(shù)可選,其中”path”必需的,這三個(gè)參數(shù)可以同時(shí)使用,參數(shù)描述:
    path:必需參數(shù),一個(gè)目錄的絕對(duì)文件系統(tǒng)路徑。 FilePathField 據(jù)此得到可選項(xiàng)目 Example: “/home/images”;
    match:可選參數(shù), 一個(gè)正則表達(dá)式, 作為一個(gè)字符串, FilePathField 將使用它過(guò)濾文件名
    注意這個(gè)正則表達(dá)式只會(huì)應(yīng)用到 base filename 而不是路徑全名; 
    Example: “foo。*\。txt^”, 將匹配文件 foo23.txt 卻不匹配 bar.txt 或 foo23.gif;
    recursive:可選參數(shù), 是否包括 path 下全部子目錄,True 或 False,默認(rèn)值為 False
    
    match 僅應(yīng)用于 base filename, 而不是路徑全名。如:
    FilePathField(path=”/home/images”, match=”foo.*”, recursive=True)…會(huì)匹配 /home/images/foo.gif 而不匹配 /home/images/foo/bar.gif
    
  • ImageField:

    類(lèi)似 FileField, 不過(guò)要校驗(yàn)上傳對(duì)象是否是一個(gè)合法圖片。它有兩個(gè)可選參數(shù):
    height_field 和 width_field,如果提供這兩個(gè)參數(shù),則圖片將按提供的高度和寬度規(guī)格保存。 
    該字段要求 Python Imaging 庫(kù)
    

關(guān)系字段類(lèi)型

  • 關(guān)系型數(shù)據(jù)庫(kù)的關(guān)系包括三種類(lèi)型:
    • ForeignKey:一對(duì)多,將字段定義在多的一端中
      hbook = models.ForeignKey(BookInfo)
    • ManyToManyField:多對(duì)多,將字段定義在兩端中
    • OneToOneField:一對(duì)一,將字段定義在任意一端中

Field 選項(xiàng)

  • null:如果為T(mén)rue,表示允許為空,默認(rèn)值是False
  • blank: 如果為T(mén)rue,則該字段允許為空白,默認(rèn)值是False對(duì)比:null是數(shù)據(jù)庫(kù)范疇的概念,blank是表單驗(yàn)證證范疇的
  • db_column:字段的名稱,如果未指定,則使用屬性的名稱
  • db_index:若值為T(mén)rue, 則在表中會(huì)為此字段創(chuàng)建索引,默認(rèn)值是False
  • default:默認(rèn)值
  • primary_key:若為T(mén)rue,則該字段會(huì)成為模型的主鍵字段,默認(rèn)值是False,一般作為AutoField的選項(xiàng)使用
  • unique: 如果為T(mén)rue, 這個(gè)字段在表中必須有唯一值,默認(rèn)值是False
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容