1. 程式人生 > >Django中模型(二)

Django中模型(二)

for 唯一值 校驗 允許 小數 如果 git ade 字符長度

Django中模型(二)

三、定義模型

1、模型、屬性、表、字段間的關系:

一個模型類在數據庫中對應一張表;在模型類中定義的屬性,對應該模型對照表中的字段。

2、定義屬性

A、概述

·django根據屬性的類型確定以下信息

·當前選擇的數據庫支持字段的類型

·渲染管理表單時使用的默認html控件

·在管理站點最低限度的驗證

B、

·django會為表增加自動增長的主鍵列,每個模型只能有一個主鍵列,如果使用選項設置某屬性為主鍵列後,則django不會再生成默認的主鍵列

C、屬性命名限制

·遵循標識符規則

·由於django的查詢方式,不允許使用連續的下劃線

3、庫

定義屬性時,需要字段類型,字段類型被定義在django.db.models.fields目錄下,為了方便使用,被導入到django.db.models中

·使用方式:

·導入from django.db import models

·通過models.Field創建字段類型的對象,賦值給屬性

4、邏輯刪除

·對於重要數據都做邏輯刪除,不做物理刪除,實現方法是定義isDelete屬性,類型為BooleanField,默認值為False

5、字段類型

·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

6、字段選項

·概述

·通過字段選項,可以實現對字段的約束

·在字段對象時通過關鍵字參數指定

·null

·如果為True,Django 將空值以NULL 存儲到數據庫中,默認值是 False

·blanke

·如果為True,則該字段允許為空白,默認值是 False

·註意

·null是數據庫範疇的概念,blank是表單驗證證範疇的

·db_column

·字段的名稱,如果未指定,則使用屬性的名稱

·db_index

·若值為 True, 則在表中會為此字段創建索引

·default

·默認值

·primary_key

·若為 True, 則該字段會成為模型的主鍵字段

·unique

·如果為 True, 這個字段在表中必須有唯一值

7、關系

·分類

·ForeignKey:一對多,將字段定義在多的端中

·ManyToManyField:多對多,將字段定義在兩端中

·OneToOneField:一對一,將字段定義在任意一端中

·用一訪問多

·格式

·對象.模型類小寫_set

·示例

grade.students_set

·用一訪問一

·格式

·對象.模型類小寫

·示例

·grade.students

·訪問id

·格式

·對象.屬性_id

·示例

·student.sgrade_id

7、元選項

概念:

在模型類中定義Mate類,用於設置元信息

db_table:

定義表名,推薦使用小寫字母,默認為項目名(小寫)_類名(小寫)

ordering:

對象的默認排序字段,獲取對象的列表時使用。

ordering[‘id’] :以id升序排列

ordering[‘-id’] :以id降序排列

使用排序會增大數據庫的開銷

Django中模型(二)