django定義模型類
阿新 • • 發佈:2018-11-04
- 模型類被定義在應用資料夾下的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_add 和auto_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'