Django中的常用字段類型與參數


Django中的常用字段類型

1. 數值型

以下都是數值相關的,比如AutoField,它在MySQL中的類型為int(11),而BooleanField在MySQL中對應的類型是tinyint(1)

AutoField int(11)

自增主鍵,Django Model默認提供,可以被重寫。它的完整定義是id=models.AutoField(primary_key=True)

BooleanField tinyint(1)

布爾類型字段,一般用於記錄狀態標記

DecimalField decimal

開發對數據精度要求較高的業務時考慮使用,比如做支付相關,金融相關。定義時,需要指定到多少位,比如cash = models.DecimalField(max_digits=8, decimal_placee=2, default=0, verbose_name="消費金額")就是定義長度為8位、精度為2的數字。比方說,你想保存666.66這樣的數字那么你的max_digits就需要為5,decimal_places需要為2

值得注意的是,在Python中也要使用Decimal類型來轉換數據(from decimal import Decimal)

IntegerField int(11)

它同AutoField一樣,唯一的差別就是不自增

PositiveIntegerField

與IntegerField一樣,但只包含正整數

SmallIntegerField smallint

小整數時一般會用到

2. 字符型

以下這些字段都是用來存儲字符數據的,對應在MySQL中有兩種類型:longtext和varchar

除了TextField是longtext類型外,其他均屬於varchar類型。

CharField varchar

基礎的varchar類型

URLField

繼承自CharField,但是實現了對URL的特殊處理

UUIDField char(32)

除了在PostgreSQL中使用的是uuid類型外,在其他數據庫中均是固定長度char(32),用來存放生成的唯一id

EmailField

同URLField一樣,他繼承自CharField,多了對E-mail的特殊處理

FileField

同URLField一樣,它繼承自CharField,多了對文件的特殊處理。當你定義一個字段為FileField時,在admin部分展示時會自動生成一個可上傳文件的按鈕。

TextField longtext

一般用來存放大量文本內容,比如新聞正文、博客正文

ImageField

繼承自FileField,用來處理圖片相關的數據,在展示上會有所不同

3. 日期類型

以下都為日期類型,分別對應MySQL的date、datetime和time

DateField

DateTimeField

TimeField

4. 關系類型

這是關系型數據庫中比較重要的字段類型,用來關聯兩個表,具體如下:

ForeignKey

OneToOneField

ManyToManyField

Django中的常用字段參數

null

可以同blank對比考慮,其中null用於設定在數據庫層面是否允許為空

blank

針對業務層面,該值是否允許為空。

choices

配置字段的choices后,在admin頁面上就可以看到對應的選項展示。

db column

默認情況下,我們定義的Field就是對應數據庫中的字段名稱,通過這個參數可以指定Model中的某個字段對應數據庫中的哪個字段。

db_ index

索引配置。對於業務上需要經常作為查詢條件的字段,應該配置此項。

default

默認值配置。

editable

是否可編輯,默認是True。 如果不想將這個字段展示到頁面上,可以配置為False。

error_ messages

用來自定義字段值校驗失敗時的異常提示,它是字典格式。key 的可選項為null、blank、invalid、invalid_choice、unique 和unique_for_date

help_text

字段提示語,配置這一項后,在頁面對應字段的下方會展示此配置。

primary_key

主鍵,一個Model只允許設置一個字段為 primary_key。

unique

唯一約束,當需要配置唯一值時,設置unique=True, 設置此項后,不需要設置db_ index。

unique_ for_ date

針對date (日期)的聯合約束,比如我們需要一 天只能有一篇名為《Django》的文章,那么可以在定義title字段時配置參數: unique _for_date="created time"。

需要注意的是,這並不是數據庫層面的約束。

unique_ for_ month

針對月份的聯合約束

unique_ for_ year

針對年份的聯合約束。

verbose_ name

字段對應的展示文案。

validators

自定義校驗邏輯,同form類似


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM