django模型 欄位和選項

2022-03-01 12:42:28 字數 3019 閱讀 6633

一、常用字段

1、字段型別

使用時需要引入django.db.models包,字段型別如下

autofield:自動增長的integerfield,通常不用指定,不指定時django會自動建立屬性名為id的自動增長屬性

booleanfield:布林字段,值為true或false

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

charfield(max_length=字元長度):字串 引數max_length表示最大字元個數

textfield:大文字字段,一般超過4000個字元時使用

integerfield:整數

decimalfield(max_digits=none, decimal_places=none):十進位制浮點數。精度高

引數max_digits表示總位數

引數decimal_places表示小數字數

floatfield:浮點數

舉例:bookprice = models.decimalfield(max_digits=10, decimal_places=2) # 圖書**。小數點後2位

datefield[auto_now=false, auto_now_add=false]):日期

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

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

引數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤。

舉例:newspublishdate = models.datefield(auto_now_add=true) # 建立時間

newsupdatedate = models.datefield(auto_now=true) # 更新時間

timefield:時間,引數同datefield

datetimefield:日期時間,引數同datefield

2、關係字段型別

關係型資料庫的關係包括三種型別:

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

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

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

可以維護遞迴的關聯關係,使用'self'指定,詳見「關聯物件」

二、常用選項

1、選項

通過選項實現對字段的約束,選項如下:

max_length:為charfield型字段設定最大長度。

null:如果為true,表示允許為空,預設值是false

default:預設值

db_column:string 值,指定當前列在資料庫中的名字,不設定,將自動採用model欄位名;

verbose_name:設定此字段在admin介面上的顯示名稱。(這個功能和list_display屬性類似了,優先顯示verbose_name)

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

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

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

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

primary_key:若為true,則該字段會成為模型的主鍵字段,預設值是false,一般作為autofield的選項使用

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

2、元選項

(1)修改表名

from django.db import models

class tbpassage234(models.model):

title = models.charfield(max_length=225)

author = models.charfield(max_length=50,null=true,verbose_name='姓 名')

pubtime = models.datetimefield(null=true)

sort = models.charfield(max_length=50,null=true)

content = models.textfield(null=true)

parse_time = models.datetimefield(null=true,max_length=0)

url_path = models.charfield(max_length=225,null=true)

level_id = models.integerfield(null=true)

isdelete = models.booleanfield(default=false)#邏輯刪除

class meta:#元類

db_table = 'tb_passage234' #自定義表名

(2)修改欄位名、設定列印顯示名稱

# 定義圖書模型類bookinfo

class bookinfo(models.model):

btitle = models.charfield(max_length=20) # 圖書名稱

bpub_date = models.datefield() # 發布日期

bread = models.integerfield(default=0) # 閱讀量

isdelete = models.booleanfield(default=false, db_column="bisdelete") # 邏輯刪除。修改欄位名稱。欄位名isdelete修改為bisdelete

class meta: # 元資訊類

db_table = 'bookinfo' # 修改表的名稱。表名booktest_bookinf修改為bookinfo

def __str__(self):

return self.btitle # 列印時顯示名稱

清空遷移操作

Django框架 模型層 字段屬性和選項

django根據屬性的型別確定以下資訊 django會為表建立自動增長的主鍵列,每個模型只能有乙個主鍵列,如果使用選項設定某屬性為主鍵列後django不會再建立自動增長的主鍵列。預設建立的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。注意 pk是主鍵的別名,若主鍵名為id2,...

一起學Django 六 模型類字段和選項

通過上面的學習,我們知道了django專案中每乙個模型類對應為資料庫中的一張表,類中沒乙個屬性對應為表中的每乙個字段。資料庫的只是告訴我們資料庫在建立表字段時是需要制定表字段的資料型別的,那我們django可以幫我實現字段資料型別的限制嗎?答案是yes!我們就通過這一篇文章來了解一下模型類中字段的型...

Django模型中常用的字段型別及選項整理

常用字段型別 模型欄位名 說明mysql對應欄位名 autofield 自增字段,如果沒有指定將自動新增乙個名為 id 的自增主鍵字段 int 11 integerfield 整數字段 intbigintegerfield 類似於integerfield,乙個64位的整數 bigint smalli...