Django 14 ORM定義模型

2021-09-17 19:31:07 字數 1673 閱讀 8686

定義模型

在模型中定義屬性,會生成表中的字段

django會為表自動增長的主鍵列,每個模型只能有乙個主鍵列,如果使用選項設定某屬性為主鍵列後,則djang不會再生成預設的主鍵列

定義屬性

定義屬性時,需要定義字段型別

• 使用方式:

1)匯入from django.db.import models

2)通過models.field建立字段型別的物件,賦值給屬性

• 對於認為重要資料都做邏輯刪除,不做物理刪除,實現方法是定義isdelete屬性,型別為booleanfield,預設值為false

字段型別

autofield:通常不指定,乙個主鍵欄位將自動新增到模型中

booleanfield:true/false欄位,此字段的預設表單控制是checkboxinput

nullbooleanfield:支援null、true、false三種值

charfield(max_length=字元長度):字串,預設的表單樣式是textinput

textfield:大文字字段,一般超過4000使用,預設的表單控制項是textarea

integerfield:整數

floatfield:浮點數

timefield/datefield/datetimefield:

• 引數auto_mow:每次儲存物件時,自動設定該字段為當前時間,用於最後一次修改的時間戳,它總是使用當前日期,預設為false

• 引數auto_now_add:當物件第一次被建立時自動設定當前時間,用於建立的時間戳,它總是使用當前日期,預設為false

filefield:上傳檔案字段

字段選項(實現對字段的約束)

在字段物件時通過關鍵字引數指定

對比:null是資料庫範疇的感念,blank是表單驗證範疇的

null:如果為true,將以null儲存到資料庫中,預設值是false(即預設欄位不為空)

blank:如果為true,則該字段允許為空白,預設值為false

db_column:欄位的名稱,如果未指定,則使用屬性的名稱

db_index:若值為true,則在表中會為此字段建立索引

default:預設值

primary_key:若為true,則該字段會成為模型的主鍵字段

unique:如果為true,這個欄位在表中必須有唯一值 

元選項

在模型類中定義類meta,用於設定元資訊

• ordering:物件的預設排序字段,獲取物件的列表時使用,接收屬性構成的列表

• 字串前加-表示倒序,不加-表示正序

• 排序會增加資料庫的開銷

Django模型ORM使用 FQ物件

在django中比較倆個屬性的方法使用f物件會更簡單快捷.f物件使用方法 from django.db.models import f f 屬性 例句 from django.db.models import f from django.db.models import bookinfo 匯入模型類...

django 定義模型

字段型別 字段選項 關係可以維護遞迴的關聯關係,使用 self 指定,詳見 自關聯 用一訪問多 物件.模型類小寫 set bookinfo.heroinfo set用一訪問一 物件.模型類小寫 heroinfo.bookinfo訪問id 物件.屬性 id heroinfo.book id class...

深入django 自定義ORM

django的model使用orm來運算元據庫,通常我們只需關注model類本身,django自己會處理到資料庫的對映。但凡事總有例外,有時需要改變預設的對映行為。django對此也提供了豐富的支援。1.自定義欄位名 預設的欄位名與屬性名相同,可以通過欄位的db column屬性自定義,如 wher...