1. 程式人生 > >Django中,models定義屬性詳情

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