Django的Models字段含義

在model中添加字段的格式通常爲:  field_name = field_type(**field_options)

一  field options(全部字段共用)python

  1  null   默認爲False,True則表示能夠爲null。(空字符串在數據庫中可能被存儲爲'')
git

  2  blank  默認爲False,True表示能夠爲空。
正則表達式

  3  choice  可選的,限制了該選項的字段值必須是所指定的choice中的一個。數據庫

    4  db_column  數據庫column名稱。默認爲本字段的名稱。django

  5  db_index  若是爲True的話,該字段的數據庫索引將會被建立app

  6  default   設置該字段的默認值,能夠是值也能夠是對象。函數

  7  editable   默認爲True,若爲False,則不會在admin/界面顯示
spa

  8  primary_key  若設置爲True,則表示將該字段設置爲主鍵。通常狀況下django默認會設置一個自增加的id主鍵。
code

  9  unique   若設置爲True,該字段值不可重複
對象

二  field type(字段類型,細分的話能夠分爲普通字段以及關係字段)

 1  普通字段

  1  AutoField()  根據已有id自增加的整形惟一字段,通常每一個model類不需設置該字段,由於django會爲每一個model自動設置。

   django默認會爲每一個model類添加以下語句:id models.AutoField(primary_key=True)  當其餘字段添加了primary_key屬性,則不會建立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時,該字段的值爲該對象被建立時的日期

  5  DateTimeField()  日期和時間字段,值爲datetime.datetime實例。默認的表單窗口以及可選參數同上。

  6  DecimalField()  混合精度的小數型數字字段。有兩個必需的參數:

    max_digits=ingt_number:限定數字的最大位數(包含小數位)

    decimal_places=int_number:存儲數字的小數位

#to store numbers up to 999 with a resolution of 2 decimal places, you’d use
models.DecimalField(..., max_digits=5, decimal_places=2)

   7  EmailField(max_length=254**options)  郵件字段,使用EmailValidator進行驗證

   8  FileField(upload_to=Nonemax_length=100**options)  文件上傳字段。

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

  有兩個可選參數:

    upload_to

      若是使用默認的FileSystomStorage,文件將會存儲到settings文件中配置的MEDIA_ROOT路徑中。

      upload_to的值也能夠爲可調用對象,經過調用這個對象能夠得到上傳路徑。

        instance=:  定義了FileField的模型實例

        filename='':  文件名稱。

    storage  用來設定文件存儲倉庫    

  9  FilePathField(path=Nonematch=Nonerecursive=Falsemax_length=100**options)

    這個字段的值被限制在系統上某個目錄中的全部文件名集合中。有三個參數

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

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

    recursive=True/False: 可選參數,默認爲False。設定是否遞歸該目錄下全部子目錄的全部文件。    

FilePathField(path="/home/images", match="foo.*", recursive=True)

  10  FloatField()  浮點字段,默認的表單窗口部件是NumberInput。和DecimalField常常混淆不清,

    FloatField在內部使用Python中的float對象,而DecimalField在內部使用Python中的decimal對象。

  11  ImageField(upload_to=Noneheight_field=Nonewidth_field=Nonemax_length=100**options

    圖像字段。繼承了FileField的全部屬性和方法。並且還能自動驗證上傳的對象是否爲合法的圖像。

  12  IntegerField  整形字段。

  13  GenericIPAddressField(protocol='both'unpack_ipv4=False**options)  ip地址字段

    protocol='both/ipv4/ipv6'  默認爲both

    unpack_ipv4   用處不大。

  14  NullBooleanField  相似於BooleanField,不一樣的是其容許值爲null

  15  TextField()   與CharField相似,但通常用來存儲體積較大的文本。

  16  TimeField(auto_now=Falseauto_now_add=False**options)   時間字段,其值爲datetime.time實例

  17  URLField(max_length=200**options)    URL字段

    相似於CharField的子類,默認最大長度爲200.

  18  UUIDField(**options)  通用惟一標識字段,當不想用django默認設置的AutoField字段時,能夠用該字段代替。

 

  2  關係字段

  關係字段:一對一,多對一,多對多

  一對一:  如今有不少一對一輔導班,也就是上課時,一個老師對應一個學生,一個學生對應一個老師

  多對一:  不少偏遠山區的學校可能整個學校只有一個老師,這一個老師對應多個學生,全部的學生對應這一個老師

  多對多:  而咱們則很幸福,學校裏有許多老師,一個老師教習一科,學生有多個老師,老師有多個學生。

  1  ForeignKey(othermodelon_delete**options)  多對一或者一對多或者外鍵字段。

    othermodel:  所關聯的模型,'多' model使用外鍵關聯  '一'model。

      當所關聯的模型爲他本身時,使用'self'

      當引用的模型爲其餘app中的模型時,要加上app名稱標籤:  'app_name.model_name'

      數據庫會自動在外鍵字段上建立索引,能夠使用de_index=False關閉該功能。

    on_delete: 當刪除 "一" 模型對象時,django會根據該參數的值對與該對象相關聯的其餘對象(也就是 ‘多’)進行操做。

        在django1.9以及以前的版本中,on_delete做爲一個關鍵字參數。而在1.10則能夠做爲第二個參數

      models.CASCADE:   默認爲models.CASCADE   級聯刪除。當刪除'一'時,‘多’會被刪除。好比:

      modles.PROTECT :    當刪除一個具備外鍵關係的對象時,會引起一個異常,阻止刪除該對象

      models.SET_NULL:   設置刪除對象所關聯的外鍵字段爲null。但字段的null屬性必需爲True

      models.SET_DEFAULT :    設置刪除對象所關聯的外鍵字段爲默認的值。

      models.SET(value)  :設置刪除對象所關聯的對象的外鍵字段爲value,value也能夠是一個可調用函數。

      models.DO_NOTHING :  不作任何操做

    limit_choices_to  限制該字段爲選項形。格式:limit_choices_to={'is_staff'True}。值也能夠爲可調用函數。

    related_name  設置從關聯對象到自身的關係的名稱,若值爲'+'  則關聯對象與自身無逆向關係。詳解請看官方文檔

    to_field  設置所關聯對象的關聯字段。默認爲關聯對象的主鍵字段。

    

  2  ManyToManyField(othermodel**options)  多對多字段。

    othermodel:  所關聯的model名稱

    db_table:  多對多關係會在兩個模型所對應的表中間建立一個‘中間表’ ,將多對多轉換爲兩個多對一,該選項爲這個中間表設置名稱。通常來講django會默認爲中間表建立名稱,但人們讀起來可能搞不清楚究竟中間表關聯到了哪裏。

    related_name:  同多對一字段中的related_name

    limite_choices_to:  同....

    symmetrical:  當多對多關聯對象爲自身時可能會用到的參數。默認爲True。a,b同屬於person模型,person中的friends字段與自身設置了多對多關係,當該值設置爲True時,django假定關係爲對稱,即:a是b的朋友,那麼b也是a的朋友。設置爲False時,django會強制爲逆向關係建立描述信息。

    though:  不想讓django自動建立中間表,手動建立中間表所對應的model,經過though指定對應的model名稱。

    though_field:  當though參數被使用時,該參數纔會有效。指定使用哪些中間模型字段來確立兩個模型的多對多關係。

  3  OneToOneField(othermodelon_deleteparent_link=False**options)  一對一字段。

    othermodel: .......

    on_delete:........

    related_name:...........

相關文章
相關標籤/搜索