Django-model之feild進階

參考地址

在model中添加字段的格式一般為: field_name = field_type(**field_options)

代碼示例

from django.db import models
from wagtail.core.models import Page
from wagtail.core.fields import RichTextField
from wagtail.admin.edit_handlers import FieldPanel

class HomePage(Page):
    body = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('body', classname="full"),
    ]

這次主要對body = RichTextField(blank=True) 進行分析,body為對象HomePage的屬性,同時body也是對象瘪弓,在上述代碼中定義為RichTextField,且option設置為blank=True

關于feild的options和types

feild為樣式對象策精,options為選項,RichTextField就是field的其中一種(wagtile特有的)

options

1. Field.null

  • bool型,null選項趟据,默認為False冗酿,空字符串埠对,若為真,則為null

2. Field.blank

  • bool型裁替,空白選項糖声,默認為False歌豺,即要求Feild不得為空白衅斩,反之可以允許空白內容

3. Field.choices

  • 只要對象屬性里含有長度>=2的list或tuple勘伺,就會自動生成一個選擇器,如:
YEAR_IN_SCHOOL_CHOICES = (
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
)

當然,也可以是多層級嵌套的

4.Field.db_column

  • 數據庫字段名开伏。字段名默認為屬性名膀跌,否則為指定的名字

5.Field.db_index

  • bool型,默認為False硅则,若為True淹父,則為改屬性在數據庫添加索引

6.Field.db_tablespace

  • 數據庫對應表的空間大小。默認為setting里的DEFAULT_INDEX_TABLESPACE

7.Field.default

  • Field的默認值怎虫,可以為一個callable對象暑认,即每次調用該feild時都會回調一個對象

8.Field.editable

  • 默認為True,即可編輯大审。設置為False時在后臺admin無法展現(xiàn)出來

9.Field.error_messages

  • 設置跳過的錯誤信息蘸际,可設置值有null, blank, invalid, invalid_choice, unique, and unique_for_date

10.Field.help_text

  • 給裝飾器添加注釋,如:
    help_text="Please use the following format: <em>YYYY-MM-DD</em>."

11.Field.primary_key

  • 主鍵徒扶,Django會自動添加AutoField來設置primary_key=True粮彤。
    primary_key=True意味著null=False and unique=True.

12.Field.unique

  • 默認為False,True時則feild必須唯一姜骡,不唯一時會報錯django.db.IntegrityError

13.Field.unique_for_date

  • 設置日期主鍵导坟,還有unique_for_month、unique_for_year等

14.Field.verbose

  • 人工field名圈澈,若無則Django自動創(chuàng)建

15.Field.validators

Field types

即對象的一些樣式

1.AutoField()

  • 根據已有id自增長的整形唯一字段惫周,一般每個model類不需設置該字段,因為django會為每個model自動設置康栈。django默認會為每個model類添加如下語句:id = models.AutoField(primary_key=True) 當其他字段添加了primary_key屬性递递,則不會創(chuàng)建id字段了。每個model類僅能有一個主鍵

2.BooleanField()

  • 布爾型字段啥么,默認的表單窗口部件是CheckBoxInput

3.CharField()

  • 字符型字段登舞,默認的表單窗口部件是TextInput。該字段類型有一個必需參數:max_length 在數據庫水平限定了字符串最大長度

4.DateField()

  • 字段的值是python中datetime.date的實例悬荣,默認的表單窗口是TextInput有幾個可選的參數:
    auto_now=True/False:當設置為True時菠秒,每當該對象使用save()時,該字段的值就會被更新氯迂。
    auto_now_add=True/False: 當設置為True時践叠,該字段的值為該對象被創(chuàng)建時的日期

5.DateTimeField()

  • 日期和時間字段,值為datetime.datetime實例囚戚。默認的表單窗口以及可選參數同上

6.DecimalField()

  • 混合精度的小數型數字字段酵熙。有兩個必需的參數:
    max_digits=ingt_number:限定數字的最大位數(包含小數位)
    decimal_places=int_number:存儲數字的小數位

7.EmailField(max_length=254, **options)

8.FileField(upload_to=None, max_length=100, **options)

  • 這個字段不能設置primary_key和unique選項.在數據庫中存儲類型是varchar驰坊,默認最大長度為100.

  • 有兩個可選參數:
    upload_to如果使用默認的FileSystomStorage,文件將會存儲到settings文件中配置的MEDIA_ROOT路徑中哮独。
    upload_to的值也可以為可調用對象,通過調用這個對象可以獲得上傳路徑拳芙。
    instance=: 定義了FileField的模型實例
    filename='': 文件名稱察藐。

9.FilePathField(path=None, match=None, recursive=False, max_length=100, **options)

  • 這個字段的值被限制在系統(tǒng)上某個目錄中的所有文件名集合中。有三個參數

  • path='': 該參數必需舟扎。上行所說的‘某個目錄’的絕對路徑分飞。Example: "/home/images".

  • recursive=True/False: 可選參數,默認為False睹限。設定是否遞歸該目錄下所有子目錄的所有文件譬猫。

  • match='pattern': 可選參數。格式是正則表達式羡疗。用來揀選符合匹配正則表達式的文件

10.FloatField()

  • 浮點字段染服,默認的表單窗口部件是NumberInput。和DecimalField經尺逗蓿混淆不清柳刮,F(xiàn)loatField在內部使用Python中的float對象,而DecimalField在內部使用Python中的decimal對象痒钝。

11.ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)

  • 圖像字段秉颗。繼承了FileField的所有屬性和方法。而且還能自動驗證上傳的對象是否為合法的圖像送矩。

12.IntegerField()

  • 整形字段

13.GenericIPAddressField(protocol='both', unpack_ipv4=False, **options)

  • ip地址字段蚕甥,protocol='both/ipv4/ipv6' 默認為both

14.NullBooleanField ()

  • 類似于BooleanField,不同的是其允許值為null

15.TextField()

  • 與CharField類似益愈,但一般用來存儲體積較大的文本梢灭。

16.TimeField(auto_now=False, auto_now_add=False, **options)

  • 時間字段,其值為datetime.time實例

16.URLField(max_length=200, **options)

  • URL字段蒸其。類似于CharField的子類敏释,默認最大長度為200.

17.UUIDField(**options)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摸袁,隨后出現(xiàn)的幾起案子钥顽,更是在濱河造成了極大的恐慌,老刑警劉巖靠汁,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜂大,死亡現(xiàn)場離奇詭異,居然都是意外死亡蝶怔,警方通過查閱死者的電腦和手機奶浦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踢星,“玉大人澳叉,你說我怎么就攤上這事。” “怎么了成洗?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵五督,是天一觀的道長。 經常有香客問我瓶殃,道長充包,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任遥椿,我火速辦了婚禮基矮,結果婚禮上,老公的妹妹穿的比我還像新娘冠场。我一直安慰自己愈捅,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布慈鸠。 她就那樣靜靜地躺著蓝谨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪青团。 梳的紋絲不亂的頭發(fā)上譬巫,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音督笆,去河邊找鬼芦昔。 笑死,一個胖子當著我的面吹牛娃肿,可吹牛的內容都是我干的咕缎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼料扰,長吁一口氣:“原來是場噩夢啊……” “哼凭豪!你這毒婦竟也來了?” 一聲冷哼從身側響起晒杈,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤嫂伞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拯钻,有當地人在樹林里發(fā)現(xiàn)了一具尸體帖努,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年粪般,在試婚紗的時候發(fā)現(xiàn)自己被綠了拼余。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡亩歹,死狀恐怖匙监,靈堂內的尸體忽然破棺而出寡润,到底是詐尸還是另有隱情,我是刑警寧澤舅柜,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站躲惰,受9級特大地震影響致份,放射性物質發(fā)生泄漏。R本人自食惡果不足惜础拨,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一氮块、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诡宗,春花似錦滔蝉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛀柴,卻和暖如春螃概,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸽疾。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工吊洼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人制肮。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓冒窍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親豺鼻。 傳聞我的和親對象是個殘疾皇子综液,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353