Django - model創建數據庫表經常使用的字段及參數清單

一、常用字段

  1. models.AutoField() —自增列 = int(11) 如果沒有的話,默認會生成一個名稱爲 id 的列,如果要顯示的自定義一個自增列,必須將給列設置爲主鍵primary_key=True

  2. models.CharField() —字符串字段 單行輸入,用於較短的字符串,如要保存大量文本, 使用 TextField。必須 max_length='最大長度' 參數,django會根據這個參數在數據庫層和校驗層限制該字段所允許的最大字符數。

  3. models.BooleanField() —布爾類型=tinyint(1) 不能爲空,Blank=True

  4. models.ComaSeparatedIntegerField() —用逗號分割的數字=varchar 繼承CharField,所以必須 max_lenght 參數,

  5. models.DateField() —日期類型 date 對於參數,auto_now = True 則每次更新都會更新這個時間;auto_now_add 則只是第一次創建添加,之後的更新不再改變。

  6. models.DateTimeField() —日期類型 datetime 同DateField的參數

  7. models.Decimal() —十進制小數類型 = decimal 必須指定整數位max_digits和小數位decimal_places

  8. models.EmailField() —字符串類型(正則表達式郵箱) =varchar 對字符串進行正則表達式 一個帶有檢查 Email 合法性的 CharField,不接受 maxlength 參數。

  9. models.FloatField() —浮點類型 = double 浮點型字段。 必須提供兩個 參數, 參數描述:
    (1)max_digits:總位數(不包括小數點和符號)
    (2)decimal_places:小數位數。如:要保存最大值爲 999 (小數點後保存2位),你要這樣定義字段:models.FloatField(…,max_digits=5, decimal_places=2),要保存最大值一百萬(小數點後保存10位)的話,你要這樣定義:models.FloatField(…,max_digits=19, decimal_places=10)

  10. models.IntegerField() —整形 用於保存一個整數

  11. models.BigIntegerField() —長整形
      integer_field_ranges = {
        ‘SmallIntegerField’: (-32768, 32767),
        ‘IntegerField’: (-2147483648, 2147483647),
        ‘BigIntegerField’: (-9223372036854775808, 9223372036854775807),
        ‘PositiveSmallIntegerField’: (0, 32767),
        ‘PositiveIntegerField’: (0, 2147483647),
      }

  12. models.IPAddressField() —字符串類型(ip4正則表達式) 一個字符串形式的 IP 地址, (如 “202.1241.30″)。

  13. models.GenericIPAddressField() —字符串類型(ip4和ip6是可選的) 參數protocol可以是:both、ipv4、ipv6 驗證時,會根據設置報錯

  14. models.NullBooleanField() —允許爲空的布爾類型 類似 BooleanField, 不過允許 NULL 作爲其中一個選項。 推薦使用這個字段而不要用 BooleanField 加 null=True 選項。 admin 用一個選擇框<select> (三個可選擇的值: “Unknown”, “Yes” 和 “No” ) 來表示這種字段數據。

  15. models.PositiveIntegerField() —正Integer 類似 IntegerField, 但取值範圍爲非負整數(這個字段應該是允許0值的…可以理解爲無符號整數)

  16. models.PositiveSmallIntegerField() —正smallInteger 正小整型字段,類似 PositiveIntegerField, 取值範圍較小(數據庫相關)SlugField“Slug” 是一個報紙術語。 slug 是某個東西的小小標記(短籤), 只包含字母,數字,下劃線和連字符。它們通常用於URLs。 若你使用 Django 開發版本,你可以指定 maxlength。 若 maxlength 未指定, Django 會使用默認長度: 50,它接受一個額外的參數:prepopulate_from: 來源於slug的自動預置列表

  17. models.SlugField() —減號、下劃線、字母、數字 它們通常用於URLs。

  18. models.SmallIntegerField() —數字 數據庫中的字段有:tinyint、smallint、int、bigint. 類似 IntegerField, 不過只允許某個取值範圍內的整數。(依賴數據庫)

  19. models.TextField() —字符串=longtext ,一個容量很大的文本字段, admin 管理界面用 多行編輯框表示該字段數據。

  20. models.TimeField() —時間 HH:MM[:ss[.uuuuuu]] 時間字段,類似於 DateField 和 DateTimeField。

  21. models.URLField() —字符串,地址正則表達式 用於保存URL。若 verify_exists 參數爲 True (默認), 給定的 URL 會預先檢查是否存在(即URL是否被有效裝入且沒有返回404響應).

  22. models.BinaryField() —二進制

  23. models.ImageField() —圖片 類似 FileField, 不過要校驗上傳對象是否是一個合法圖片。它有兩個可選參數:height_fieldwidth_field,如果提供這兩個參數,則圖片將按提供的高度和寬度規格保存。該字段要求 Python Imaging 庫。

  24. models.FilePathField() —選擇指定目錄按限制規則選擇文件,有三個參數可選, 其中”path”必需的,這三個參數可以同時使用, 參數描述:
    (1)path:必需參數,一個目錄的絕對文件系統路徑。 FilePathField 據此得到可選項目。 Example: “/home/images”;
    (2)match:可選參數, 一個正則表達式, 作爲一個字符串, FilePathField 將使用它過濾文件名。 注意這個正則表達式只會應用到 base filename 而不是路徑全名。 Example: “foo。*\。txt^”, 將匹配文件 foo23.txt 卻不匹配 bar.txt 或 foo23.gif;
    (3)recursive:可選參數, 是否包括 path 下全部子目錄,True 或 False,默認值爲 False。

    match 僅應用於 base filename, 而不是路徑全名。
    如:FilePathField(path=”/home/images”, match=”foo.*”,recursive=True)…會匹配/home/images/foo.gif 而不匹配 /home/images/foo/bar.gif

  25. models.FileField() —文件上傳字段。 要求一個必須有的參數: upload_to, 一個用於保存上載文件的本地文件系統路徑。 這個路徑必須包含 strftime formatting, 該格式將被上載文件的 date/time 替換(so that uploaded files don’t fill up the given directory)。在一個 model 中使用 FileField 或 ImageField 需要以下步驟:在你的 settings 文件中, 定義一個完整路徑給 MEDIA_ROOT 以便讓 Django在此處保存上傳文件。 (出於性能考慮,這些文件並不保存到數據庫。) 定義 MEDIA_URL 作爲該目錄的公共 URL。 要確保該目錄對 WEB 服務器用戶帳號是可寫的。在你的 model 中添加 FileField 或 ImageField, 並確保定義了 upload_to 選項,以告訴 Django 使用 MEDIA_ROOT 的哪個子目錄保存上傳文件。你的數據庫中要保存的只是文件的路徑(相對於 MEDIA_ROOT)。 出於習慣你一定很想使用 Django 提供的 get__url 函數。舉例來說,如果你的 ImageField 叫作 mug_shot, 你就可以在模板中以 {{ object。get_mug_shot_url }} 這樣的方式得到圖像的絕對路徑。

  26. models.PhoneNumberField() —一個帶有合法美國風格電話號碼校驗的 CharField(格式:XXX-XXX-XXXX)

  27. models.USStateField() —美國州名縮寫,由兩個字母組成。

  28. models.XMLField() —XML字符字段,校驗值是否爲合法XML的 TextField,必須提供參數:
    schema_path:校驗文本的 RelaxNG schema 的文件系統路徑。

二、參數

  1. null=True
    數據庫中字段是否可以爲空

  2. blank=True
    django的 Admin 中添加數據時是否可允許空值

  3. primary_key = False
    主鍵,對AutoField設置主鍵後,就會代替原來的自增 id 列

  4. auto_nowauto_now_add
    auto_now 自動創建—無論添加或修改,都是當前操作的時間
    auto_now_add 自動創建—永遠是創建時的時間

  5. choices

    GENDER_CHOICE = (
    	(u'M', u'Male'),
    	(u'F', u'Female'),
    )
    #這裏我們用在內存創建一個關聯,來取代再創建一個簡單的表來關聯
    gender = models.CharField(max_length=2,choices = GENDER_CHOICE) 
    
    
  6. max_length 最大長度

  7. default  默認值

  8. verbose_name  Admin中字段的顯示名稱

  9. name|db_column  數據庫中的字段名稱

  10. unique=True  不允許重複
    例如用戶名註冊時候是不允許重複的,在username字段裏設置,不讓重複

  11. db_index = True  數據庫索引

  12. editable=True  在Admin裏是否可編輯

  13. error_messages=None  錯誤提示

     #把錯誤提示修改成你想要的報錯,這裏加個字典來完成 
    gender = models.CharField(max_length=2,choices = GENDER_CHOICE,error_messages={"錯誤類型":"錯誤原因"})
    
  14. auto_created=False  自動創建

  15. help_text  在Admin中提示幫助信息

  16. validators=[] 提示區間,例如電話號碼範圍

  17. upload-to 文件上傳功能 在 FileField 里加入

    #指明上傳的文件防止根目錄下的/upload/文件夾下
    file = modles.FileField(upload-to = "./upload/"     
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章