Django 中模型models欄位型別總結

2021-10-11 16:38:38 字數 3913 閱讀 2016

下邊字段型別是在django中使用orm建立資料模型時,常用的字段型別總結:

1、autofield

乙個自增的integerfield,想要自定義主鍵,那麼primary_key必填。一般不直接使用,因為django會自動為每一張表新增自增主鍵(primary_key)

2、charfield

用來儲存字串,必須指定範圍(在254個字元之內),如果儲存大文字字串(超過254個字元),應當用textfield - 可儲存任意長度的文字,對應資料庫型別為 lonetext

如果不設定max_length, 會報錯:

使用python的datetime.date例項儲存的日期,記錄年月日,在對映資料庫中也是date型別,使用這個字段型別可以傳遞以下幾個引數

auto_now = true:每次儲存物件時,自動設定該字段為當前時間(可用於修改字段);

auto_now_add = true:物件第一次被建立時自動設定當前的時間。需要注意的是:自動儲存的時間的時區使用的是預設時區(可用於建立字段)。

模型中定義字段:

對映到資料庫中得到的如下:

日期型別一般不會用到,儲存時都會帶上時間,所以下邊datetimefield 常用。

4、datetimefield

使用python的datetime.datetime例項表示日期和時間, 對映到資料庫中是datetime型別。使用此欄位型別可傳以下引數:

模型中定義字段:

對映到資料庫中如下:

儲存大字串(大於254個字元的),對映到資料庫為:longtext型別。

6、

(1)bigintegerfield

64位整型,從-2^63( -9223372036854775808) 到2^63-1(9223372036854775807)

(2)integerfield

整型,值區間為:-2147483648 —— 2147483647

7、binaryfield

儲存二進位制的字段,只支援bytes賦值

8、booleanfield

儲存true 或 false,在資料庫層面是:tinyint型別,如果沒有指定預設值,預設值為none。如果此字段有可能為null值,你必須把型別設定為nullbooleanfield

否則,將會報錯:

儲存浮點數的字段型別,用python的乙個float例項來表示浮點數。

10、uuidfield

用來儲存uuid的字段。使用的是python的uuid類。

11、foreignkey

多對一關係。

12、manytomanyfield

多對多關係。

13、onetoonefield

一對一關聯關係。

14、decimalfield

用於計算**或者金融專案儲存金額時,所用的字段型別:表示固定精度的十進位制數的貨幣字段。

兩個必填引數:

(1)max_digits : 數字允許的做大位數;

(2)decimal_places: 小數的最大位數。

如:

# 要儲存的數字為:最大長度為4位數,小數點後2位小數

models.decimalfield( max_digits=4, decimal_places=2 )

1、null = true- 資料庫字段是否可為空,true可為空,預設情況下為:false不可為空。

注意:

如果在定義欄位的時候,沒有指定null=true,那麼預設情況下,null=false,就是不能為空,否則將會報錯!

2、blank = true- django的admin中新增資料時是否允許為空值。與null的區別為:null是乙個純資料庫級別的,而blank是表單驗證級別的。

3、primary_key = false- 主鍵,對autofield型別的字段設定主鍵後,就會代替原來自增id列。

如果您沒有為模型中的任何字段指定primary_key=true, django將自動新增乙個integerfield來儲存主鍵,所以您不需要在任何欄位上設定primary_key=true,除非您想要覆蓋預設的主鍵行為。

4、auto_now= true- 每次儲存或新增都會建立當前時間(可用於修改/編輯時間字段)

5、auto_now_add = true- 每次儲存或新增都會儲存第一次建立的時間(可用於建立時間字段)

6、max_length -定義字串最大長度。

7、default -給字段定義預設值,注意:如果你想設定乙個預設值,前提需要設定null=true。如果沒傳值,沒設定null=true,即使你設定了預設值存到資料庫中也是null。

8、unique = true- 不允許重複,如:使用者密碼等等。

9、auto_create = false -自動建立。

10、upload_to- 檔案上傳指定的目錄。

11、db_column- 可更改資料庫中字段的名字,如果沒有設定此欄位,那麼將會使用模型中屬性的名字。

注意:更改完之後,需要執行遷移命令:

python manage.py makemigrations

python manage.py migrate

未完成,後續有時間再補充!

Django1 6中models模型關聯的方法整理

foreignkey是個多對一 many to one 關係。引用下官方文件的例子 from django.db import models class topping models.model pass class pizza models.model toppings models.foreig...

Django的models中filter的各種用法

exact 精確等於 like aaa iexact 精確等於 忽略大小寫 ilike aaa contains 包含 like aaa icontains 包含 忽略大小寫 ilike aaa 但是對於sqlite來說,contains的作用效果等同於icontains。gt 大於 gte 大於等...

Django中models的編寫

models的編寫 1 通過orm建立資料表from django.db import models create your models here.class publisher models.model name models.charfield max length 20 address mo...