12.字段選項(xiàng)

[TOC]

null(空值)

如果設(shè)置為True, 不填寫該字段時(shí)存儲(chǔ)NULL到數(shù)據(jù)庫(kù)中
默認(rèn)為False

字符串類型的Field里(CharField 和TextField)不建議使用此選項(xiàng),因?yàn)槿绱藭?huì)導(dǎo)致數(shù)據(jù)庫(kù)中會(huì)存在null和空字符串這兩種情況表示空串

blank(允許為空)

是否可以不填寫,默認(rèn)為False

和null不同,null是數(shù)據(jù)庫(kù)規(guī)定的范疇,blank則是表單驗(yàn)證的范疇,如果設(shè)置了blank為True則表單驗(yàn)證時(shí)可以不填,如果是False(默認(rèn)值)則表單中必須填寫該值

choices(選項(xiàng))

如果字段的值你需要用戶在規(guī)定的某些中選擇一個(gè),而不是用戶隨意填寫一個(gè),那你就可以加上一個(gè)choices

他是一個(gè)可迭代的結(jié)構(gòu)(列表,元祖),里面的每個(gè)元素是一個(gè)二元組,如((A,B),(C,D)),A C代表數(shù)據(jù)庫(kù)中存儲(chǔ)的值,B D代表展現(xiàn)給用戶的值(顯示的話可以使用 {{get_字段名_display}});如果設(shè)置了choice,表單中的默認(rèn)樣式就會(huì)變成選擇框,而且選項(xiàng)就是choices中的值。

除非blank=False 和default一起在字段中被設(shè)置,否則,可選擇菜單將會(huì)有"---------" 的標(biāo)簽。要重寫這個(gè)行為, 需要加入一個(gè)包含None的元組到 choices里面; 例如 (None, 'Your String For Display'). 或者, 你可以在操作有意義的地方用一個(gè)空字符串代替None - 比如在一個(gè) CharField.

db_column(數(shù)據(jù)庫(kù)列名)

指定數(shù)據(jù)庫(kù)中該字段的列名,當(dāng)字段名與python關(guān)鍵字沖突時(shí),指定此參數(shù)可以解決此問題

db_index(字段創(chuàng)建索引)

如果該值為True,則為該字段創(chuàng)建索引CREATE INDEX ...

db_tablespace(數(shù)據(jù)庫(kù)表的命名空間--未理解狀態(tài)中。。。。)

數(shù)據(jù)庫(kù)表的命名空間--未理解狀態(tài)中。。。。

default(設(shè)置默認(rèn)值)

設(shè)置字段的默認(rèn)值或者一個(gè)可調(diào)用的對(duì)象
默認(rèn)值會(huì)在新實(shí)例創(chuàng)建且沒呀給該字段設(shè)置值時(shí)使用,不能使用lambdas函數(shù)作為default,因?yàn)闊o(wú)法被uimigrations命令序列化

editable(是否可修改)

如果設(shè)置為False,該字段不會(huì)出現(xiàn)在admin或者M(jìn)odekForm中

error_messages(自定義錯(cuò)誤信息,待詳細(xì)整理)

error_messages 參數(shù)能夠讓你重寫默認(rèn)拋出的錯(cuò)誤信息。通過指定 key 來(lái)確認(rèn)你要重寫的錯(cuò)誤信息。

error_messages 的 key 值包括 null, blank, invalid, invalid_choice, unique, 和 unique_for_date. 其余的 error_messages 的 keys 在不同的Field types中是不一樣的。

help_text(額外的提示信息)

顯示在表單控件form的 額外幫助文本。即便你的字段沒有應(yīng)用到一個(gè)form里面,這樣的操作對(duì)文檔化也很有幫助。

注意這不會(huì)自動(dòng)添加 HTML 標(biāo)簽。需要你在 help_text 包含自己需要的格式。例如:
help_text="Please use the following format: <em>YYYY-MM-DD</em>."
另外, 你可以使用簡(jiǎn)單文本和django.utils.html.escape()以避免任何HTML特定的字符.
請(qǐng)確保你所使用的help text能夠避免那些由不受信任的用戶進(jìn)行的跨站點(diǎn)腳本攻擊。

primary_key(主鍵)

指定該字段為數(shù)據(jù)庫(kù)中的主鍵,以代替django自動(dòng)添加的ID屬性
primary_key=True 暗含著null=False 和unique=True. 一個(gè)對(duì)象上只能擁有一個(gè)主鍵,如果嘗試修改主鍵會(huì)創(chuàng)建一個(gè)新的而不是覆蓋舊的。

unique(唯一)

如果設(shè)置為True則這個(gè)字段在表中必須唯一,否則會(huì)拋出一個(gè)django.db.IntegrityError異常
除了ManyToManyField、OneToOneField和FileField 以外的其他字段類型都可以使用這個(gè)設(shè)置
指定此選項(xiàng)不必再指定 db_index 因?yàn)閡nique本身就意味著一個(gè)索引的創(chuàng)建

unique_for_data(指定日期內(nèi)唯一)

當(dāng)設(shè)置它為DateField 和 DateTimeField 字段的名稱時(shí),表示要求該字段對(duì)于相應(yīng)的日期字段值是唯一的.
例如,你有一個(gè)title 字段設(shè)置unique_for_date="pub_date",那么Django 將不允許兩個(gè)記錄具有相同的title 和pub_date
即時(shí)是 DateTimeField 字段 也只會(huì)驗(yàn)證日期而不會(huì)考慮時(shí)間

unique_for_month(指定月份唯一)

nique_for_year(指定年份唯一)

verbose_name(后臺(tái)管理界面上顯示的)

后臺(tái)管理界面上顯示比較貼近理解的字段名,默認(rèn)是字段名(將下劃線替換為空格)

validators(驗(yàn)證器,待完善)

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • Django Model 定義語(yǔ)法 版本:1.7主要來(lái)源:https://docs.djangoproject.c...
    羅田閱讀 31,228評(píng)論 2 42
  • 模型是關(guān)于數(shù)據(jù)的單一的、最終的數(shù)據(jù)源。它包含存儲(chǔ)的數(shù)據(jù)的基本字段和行為。通常,每個(gè)模型映射到單個(gè)數(shù)據(jù)庫(kù)表。 每一個(gè)...
    低吟淺唱1990閱讀 283評(píng)論 0 0
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,278評(píng)論 0 15
  • 賣火柴的小女孩,在最后一根火柴熄滅的時(shí)候,被一對(duì)好心的夫婦遇見了,他們給她戴上了溫暖柔軟的大圍巾,把她摟在懷里,把...
    姚葡萄閱讀 282評(píng)論 0 0

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