簡單了解Django ORM常用字段類型及參數(shù)配置
這篇文章主要介紹了簡單了解Django ORM常用字段類型及參數(shù)配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
一、數(shù)值型
- AutoField對應(yīng)int(11)。自增主鍵,Django Model默認(rèn)提供,可以被重寫。
- BooleanField對應(yīng)tinyint(1)。布爾類型字段,一般用于記錄狀態(tài)標(biāo)記。
- DecimalField對應(yīng)decimal。開發(fā)對數(shù)據(jù)精準(zhǔn)要求較高大的業(yè)務(wù)時考慮使用。比如:cash=models.DecimalField(max_length, decimal_places=2, default=0, verbose_name=“消費金額”),就是定義長度為8位、精度位2位的數(shù)字,例如數(shù)字:666666.66。
- IntergerField對應(yīng)**int(11) **。同AutoField一樣,唯一的差別就是不自增。
- PositiveIntegerField。同IntegerField,只包含正整數(shù)。
- SmallIntegerField對應(yīng)smallint。小整數(shù)時一般會用到。
二、字符型
django對應(yīng)到Mysql中有兩種類型:longtext和varchar。
除了TextField是longtest類型外,其他屬于varchar類型。
- CharField對應(yīng)varchar?;A(chǔ)的varchar類型。
- URLField.繼承自CharField,但是實現(xiàn)了對URL特特殊處理。用來存儲URL數(shù)據(jù),非URL數(shù)據(jù)可以在業(yè)務(wù)層就拒絕掉,不會存入數(shù)據(jù)庫中。
- UUIDField對應(yīng)char(32)。除了在PostgreSQL中使用的是uuid類型外,在其他數(shù)據(jù)庫中均是固定長度char(32),用來存放生成的唯一id。
- EmailField。同URLfield一樣繼承自CharField,多了對email的特殊處理。
- FileField。同URLField一樣,它繼承自CharField,對了對文件的特殊處理。
- TextField對應(yīng)longtext。一般用于存放大量文本內(nèi)容,比如新聞?wù)?、博客正文?/li>
- ImageField。繼承自FileField,用來處理圖片相關(guān)的數(shù)據(jù),在展示上會有所不同。
三、日期類型
django中有3中日期類型,分別對應(yīng)Mysql的date、datetime和time
- DateField對應(yīng)date
- DateTimeField對應(yīng)datetime
- TimeField對應(yīng)time
四、關(guān)系類型
- ForeignKey,外鍵
- OneToOneField,一對一
- ManyToManyField,多對多
五、參數(shù)
上面django所提供的字段都是類。
比如models.CharField的定義就是:class CharField:。
每個字段里面都提供了參數(shù)可以選擇:
- null??梢酝琤lank進(jìn)行對比。null用于設(shè)定在數(shù)據(jù)庫層面是否允許為空
- blank。針對業(yè)務(wù)層面,該值是否允許為空。
- choices。配置字段的choices后,在admin頁面上就可以看到對應(yīng)的可選項展示。
- db_column。默認(rèn)情況下,定義的field就是對應(yīng)數(shù)據(jù)庫中的字段名稱,通過這個參數(shù)可以指定Model中的某個字段對應(yīng)數(shù)據(jù)庫中的哪個字段。
- db_index。數(shù)據(jù)庫索引配置。
- default。默認(rèn)值配置。
- editable。是否可編輯,默認(rèn)是True。如果不想這個字段顯示在頁面上,可以配置為False。
- error_messages。用來自定義字段值校驗失敗時的異常提示,它是字典格式。key的值可選項為null、blank、invalid、invalid_choice、unique和unique_for_date。
- help_text。字段提示語,配置這一項后,在頁面對應(yīng)字段的下方會展示此配置。
- primary_key。主鍵,一個Model只允許設(shè)置一個字段為primary_key。
- unique。唯一約束,當(dāng)需要配置唯一值時,設(shè)置unique=True,設(shè)置此項后,不需要設(shè)置db_index。
- unique_for_date。針對date(日期)的聯(lián)合約束。比如說一天只能寫一篇博文,即:unique_for_date=“博文”
- unique_for_month。針對月份的聯(lián)合約束 。
- unique_for_month。針對年份的聯(lián)合約束。
- verbose_name。字段對應(yīng)的展示文案。
- validators。自定義校驗邏輯,同form類似。
關(guān)于Django字段類型中 blank和null的區(qū)別
blank
設(shè)置為True時,字段可以為空。設(shè)置為False時,字段是必須填寫的。字符型字段CharField和TextField是用空字符串來存儲空值的。
如果為True,字段允許為空,默認(rèn)不允許。
null
設(shè)置為True時,django用Null來存儲空值。日期型、時間型和數(shù)字型字段不接受空字符串。所以設(shè)置IntegerField,DateTimeField型字段可以為空時,需要將blank,null均設(shè)為True。
如果為True,空值將會被存儲為NULL,默認(rèn)為False。
如果想設(shè)置BooleanField為空時可以選用NullBooleanField型字段。
一句話概括
- null 是針對數(shù)據(jù)庫而言,如果 null=True, 表示數(shù)據(jù)庫的該字段可以為空。
- blank 是針對表單的,如果 blank=True,表示你的表單填寫該字段的時候可以不填,比如 admin 界面下增加 model 一條記錄的時候。直觀的看到就是該字段不是粗體
- 通俗點說,該字段null=true后,你進(jìn)行插入,修改操作時可以為空,然后Django把空值轉(zhuǎn)換成null存在數(shù)據(jù)庫中,而blank只是在表單驗證的時候會檢測你是否可以為空
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python數(shù)據(jù)庫安裝及MySQL?Connector應(yīng)用教程
這篇文章主要為大家介紹了Python數(shù)據(jù)庫安裝及MySQL Connector應(yīng)用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Python數(shù)據(jù)分析之?Matplotlib?3D圖詳情
本文主要介紹了Python數(shù)據(jù)分析之Matplotlib 3D圖詳情,Matplotlib提供了mpl_toolkits.mplot3d工具包來進(jìn)行3D圖表的繪制,下文總結(jié)了更多相關(guān)資料,需要的小伙伴可以參考一下2022-05-05Python 3.8中實現(xiàn)functools.cached_property功能
這篇文章主要介紹了Python 3.8中實現(xiàn)functools.cached_property功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05