1. 程式人生 > >django定義模型類

django定義模型類

 

  • 模型類被定義在應用資料夾下的model.py中
  • 模型類必須繼承Django的models.Model類
  • 屬性名不能用連續的兩條下劃線__
  • 主鍵:primary key,簡寫 pk
  • 不需要主動定義,django會自動生成自增長的主鍵,屬性名叫 id,
  • 如果開發者自己定義了主鍵,則django不會再生成預設的主鍵

 

格式:

屬性名=models.欄位型別(欄位選項)

 

  • 欄位型別:

型別 說明
AutoField
自動增長的IntegerField,通常不用指定,不指定時Django會自動建立名為id的自動增長屬性
BooleanField 布林欄位,值為True或False
NullBooleanField 支援Null、True、False三種值
CharField 字串,必須指定max_length,表示最大字元個數
TextField 大文字欄位,一般超過4000個字元時使用
IntegerField 整數
DecimalField
十進位制浮點數,用python中的Decimal例項來表示
必須指定max_digits最大位數,decimal_places小數位數。
FloatField 浮點數
DateField 日期
1) 引數auto_now表示每次修改儲存物件時,自動設定該欄位為當前時間,用於儲存"最後一次修改"時間,預設為False;
2) 引數auto_now_add表示當物件第一次被建立時自動設定儲存當前時間,用於儲存"建立時間"時間,預設為值為False;
3) 引數auto_now_addauto_now是相互排斥的,不能同時用到一個屬性中
TimeField 時間,引數同DateField
DateTimeField 日期時間,引數同DateField
FileField 上傳檔案欄位
ImageField 繼承於FileField,對上傳的內容進行校驗,確保是有效的圖片

 

  • 欄位選項:

選項 預設值 描述 是否要遷移修改表結構
null False True表示表字段允許為空
unique False True表示表字段不能重複
db_column 屬性名稱 表字段名稱
primary_key False True表示欄位設定為了主鍵,一般作為AutoField的選項使用
db_index False 建立索引
default - 預設值
blank False 在django管理後臺新增或編輯一條表資料時,該欄位是否允許為空;
null是資料庫範疇的概念,blank是表單驗證範疇的
choices - 在django管理後臺新增或編輯一條表資料時,該欄位顯示為下拉框,預設為編輯框

 注意:

choices和blank主要是為django的管理後臺頁面服務的。

  • choices: 性別屬性使用了choices選項後,在錄入一條資料時,會以下拉框顯示
  • blank:blank屬性預設值為false, 表示錄入一條資料時,當前欄位必須填寫,不能為空,否則js端js校驗不通過,例如:下圖的comment員工備註資訊欄位。

如下圖:

 

  • 設定表名

  • 預設為:應用名小寫_模型類名小寫
  • 可通過通過Meta類指定表名

  示例:
# 如果應用名為users,則預設表名為:users_department
class Department(models.Model):
      ...
    class Meta:
        # 指定生成的資料庫表的名字
        db_table = 'department'