Django中,models定義屬性詳情
定義屬性
概述
·django根據屬性的型別確定以下資訊
·當前選擇的資料庫支援欄位的型別
·渲染管理表單時使用的預設html控制元件
·在管理站點最低限度的驗證
·django會為表增加自動增長的主鍵列,每個模型只能有一個主鍵列,如果使用選項設定某屬性為主鍵列後,則django不會再生成預設的主鍵列
·屬性命名限制
·遵循識別符號規則
·由於django的查詢方式,不允許使用連續的下劃線
庫
·定義屬性時,需要欄位型別,欄位型別被定義在django.db.models.fields目錄下,為了方便使用,被匯入到django.db.models中
·使用方式
·匯入from django.db import models
·通過models.Field建立欄位型別的物件,賦值給屬性
邏輯刪除
·對於重要資料都做邏輯刪除,不做物理刪除,實現方法是定義isDelete屬性,型別為BooleanField,預設值為False
欄位型別
·AutoField
·一個根據實際ID自動增長的IntegerField,通常不指定如果不指定,一個主鍵欄位將自動新增到模型中
·CharField(max_length=字元長度)
·字串,預設的表單樣式是 TextInput
·TextField
·大文字欄位,一般超過4000使用,預設的表單控制元件是Textarea
·IntegerField
·整數
·DecimalField(max_digits=None, decimal_places=None)
·使用python的Decimal例項表示的十進位制浮點數
·引數說明
·DecimalField.max_digits
·位數總數
·DecimalField.decimal_places
·小數點後的數字位數
·FloatField
·用Python的float例項來表示的浮點數
·BooleanField
·true/false 欄位,此欄位的預設表單控制是CheckboxInput
·NullBooleanField
·支援null、true、false三種值
·DateField([auto_now=False, auto_now_add=False])
·使用Python的datetime.date例項表示的日期
·引數說明
·DateField.auto_now
·每次儲存物件時,自動設定該欄位為當前時間,用於"最後一次修改"的時間戳,它總是使用當前日期,預設為false
·DateField.auto_now_add
·當物件第一次被建立時自動設定當前時間,用於建立的時間戳,它總是使用當前日期,預設為false
·說明
·該欄位預設對應的表單控制元件是一個TextInput. 在管理員站點添加了一個JavaScript寫的日曆控制元件,和一個“Today"的快捷按鈕,包含了一個額外的invalid_date錯誤訊息鍵
·注意
·auto_now_add, auto_now, and default 這些設定是相互排斥的,他們之間的任何組合將會發生錯誤的結果
·TimeField
·使用Python的datetime.time例項表示的時間,引數同DateField
·DateTimeField
·使用Python的datetime.datetime例項表示的日期和時間,引數同DateField
·FileField
·一個上傳檔案的欄位
·ImageField
·繼承了FileField的所有屬性和方法,但對上傳的物件進行校驗,確保它是個有效的image
欄位選項
·概述
·通過欄位選項,可以實現對欄位的約束
·在欄位物件時通過關鍵字引數指定
·null
·如果為True,Django 將空值以NULL 儲存到資料庫中,預設值是 False
·blanke
·如果為True,則該欄位允許為空白,預設值是 False
·注意
·null是資料庫範疇的概念,blank是表單驗證證範疇的
·db_column
·欄位的名稱,如果未指定,則使用屬性的名稱
·db_index
·若值為 True, 則在表中會為此欄位建立索引
·default
·預設值
·primary_key
·若為 True, 則該欄位會成為模型的主鍵欄位
·unique
·如果為 True, 這個欄位在表中必須有唯一值
關係
·分類
·ForeignKey:一對多,將欄位定義在多的端中
·ManyToManyField:多對多,將欄位定義在兩端中
·OneToOneField:一對一,將欄位定義在任意一端中
·用一訪問多
·格式
·物件.模型類小寫_set
·示例
grade.students_set
·用一訪問一
·格式
·物件.模型類小寫
·示例
·grade.students
·訪問id
·格式
·物件.屬性_id
·示例
·student.sgrade_id