Django model 欄位類型及選項解析

来源:https://www.cnblogs.com/LaoMuJi/archive/2019/07/19/11216068.html
-Advertisement-
Play Games

轉載自:https://blog.csdn.net/JamesPaul32/article/details/80775211 model field 類型 1、AutoField() 自增的IntegerField,通常不用自己設置,若沒有設置主鍵,Django會自動添加它為主鍵欄位,Django會 ...


轉載自:https://blog.csdn.net/JamesPaul32/article/details/80775211

model field 類型

1、AutoField() 
自增的IntegerField,通常不用自己設置,若沒有設置主鍵,Django會自動添加它為主鍵欄位,Django會自動給每張表添加一個自增的primary key。

2、BigIntegerField
64位整數, -9223372036854775808 到 9223372036854775807。預設的顯示widget 是 TextInput.

3、BinaryField ( Django 1.6 版本新增 )
存儲二進位數據。不能使用 filter 函數獲得 QuerySet

4、BooleanField()
True/False,預設的widget 是 CheckboxInput。 
如果需要置空,則必須用 NullBooleanField 代替。 
Django 1.6 修改:BooleanField 的預設值 由 False 改為 None,在 default 屬性未設置的情況下。

5、CharField(max_length=none[, **options])
儲存字元串。必須有 max_length 參數指定長度。作用於數據層級和django數據驗證層級。預設的form widget 是 TextInput如果字元串巨長,推薦使用 TextField。

6、CommaSeparatedIntegerField(max_length=none[, **options])
存放由逗號間隔的整數序列。必須有 max_length 參數。

7、DateField
日期,與python里的datetime.date 實例同。有以下幾個可選的選項,均為bool類型: 
DateField.auto_now: 每次執行 save 操作的時候自動記錄當前時間,常作為最近一次修改的時間 使用。註意:總是在執行save 操作的時候執行,無法覆蓋。 
DateField.auto_now_add: 第一次創建的時候添加當前時間。常作為 創建時間 使用。註意:每次create 都會調用。 
預設的form widget 是 TextInput。 
註意:設置auto_now 或者 auto_now_add 為 True 會導致當前自動擁有 editable=False 和 blank = True 設置。

8、DateTimeField([auto_now=False, auto_now_add=False, **options])
日期+時間。與python里的 datetime.datetime 實例同。常用附加選項和DateField一樣。 
預設 form widget 是一個 TextInput

9、DecimalField(max_digits=None,decimal_places=None[, **options])
用decimal實例表示固定精度的十進位數的欄位,有兩個必須參數,max_digits數字允許的最大位數,decimal_places小數的最大位數。django後臺用表示該欄位, 通常用來表示金額

10、EmailField([maxlength=75, **options])
在 CharField 基礎上附加了 郵件地址合法性驗證。不需要強制設定 max_length 
註意:當前預設設置 max_length 是 75,雖然已經不符合標準,但未了向前相容,未修改。

11、FileField(upload_to=None[, max_length=100, **options])
文件上傳欄位。不支持 primary_key 和 unique 選項。否則會報 TypeError 異常。 
必須設置 FileField.upload_to 選項,這個是 本地文件系統路徑,附加在 MEDIA_ROOT 設置的後邊,也就是 MEDIA_ROOT 下的子目錄相對路徑。預設的form widget 是 FileInput。

12、FloatField
與 python 里的 float 實例相同,預設的 form widget 是 TextInput。 
雖然 FloatField 與 DecimalField 都是表示實數,但卻是不同的表現形式,FloatField 用的是 python d float 類型,但是 DecimalField 用的卻是 Decimal 類型。區別可見:http://docs.python.org/2.7/library/decimal.html#decimal

13、ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])
在 FileField 基礎上加上是否是合法圖片驗證功能的一個類型。 
除了 FileField 有的屬性外,ImageField 另有 height 和 width 屬性。 
註意:需要安裝 PIL 或者 Pillow 模塊。在資料庫中同樣表現為 varchar(100),可通過 max_length 改大小。

14、IntegerField
整數,預設的form widget 是 TextInput。

15、IPAddressField
IP地址,字元串類型,如 127.0.0.1。預設 form widget 是 TextInput。

16、GenericIPAddressField
ip v4和ip v6地址表示,ipv6遵循RFC 4291section 2.2,

17、NullBooleanField
可以包含空值的布爾類型,相當於設置了null=True的BooleanField。

18、PositiveSmallIntegerField
正短整數或0類型,類似於PositiveIntegerField,取值範圍依賴於資料庫特性,[0 ,32767]的取值範圍對Django所支持的資料庫都是安全的。

19、PositiveIntegerField
正整數或0類型,取值範圍為[0 ,2147483647]

20、SlugField
只能包含字母,數字,下劃線和連字元的字元串,通常被用於URLs表示。可選參數max_length=50,prepopulate_from用於指示在admin表單中的可選值。db_index,預設為True。

21.SmallIntegerField
小整數欄位,類似於IntegerField,取值範圍依賴於資料庫特性,[-32768 ,32767]的取值範圍對Django所支持的資料庫都是安全的。

22、TextField
大文本,巨長的文本。預設的 form widget 是 Textarea。

23、TimeField
時間,對應Python的datetime.time

24、URLField
加了 URL 合法性驗證的 CharField。 
預設的 form widget 是 TextInput。 
預設max_length=200,可修改。

25、FilePathField(path=None[, match=None, recursive=False, max_length=100, options])
他是一個CharField,用來選擇文件系統下某個目錄裡面的某些文件,它有三個專有參數,只有path是必須的。path是一個目錄的絕對路徑,match是一個正則表達式字元串,用來過濾文件名稱;recursive為bool,指定是否包含path下的子目錄。

註意,如果使用 MySQLdb 1.2.1p2 和 utf-8_bin 編碼,會有一些問題https://docs.djangoproject.com/en/dev/ref/databases/#mysql-collation。具體問題未分析,可自行避開。

Field 選項

null 
boolean 值,預設設置為false。通常不將其用於字元型欄位上,比如CharField,TextField上。字元型欄位如果沒有值會返回空字元串。

blank
boolean 值,該欄位是否可以為空。如果為假,則必須有值。

choices
元組值,一個用來選擇值的2維元組。第一個值是實際存儲的值,第二個用來方便進行選擇。如SEX_CHOICES=((‘F’,’Female’),(‘M’,’Male’),)

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

db_index
boolean 值,如果為True將為此欄位創建索引;

default
給當前欄位設定的預設值,可以是一個具體值,也可以是一個可調用的對象,如果是可調用的對象將每次產生一個新的對象;

editable
boolean 值,如果為假,admin模式下將不能改寫。預設為真;

error_messages
字典,設置預設的出錯信息,可覆蓋的key 有 null, blank, invalid, invalid_choice, 和 unique。

help_text
admin模式下幫助文檔 
form widget 內顯示幫助文本。

primary_key
設置主鍵,如果沒有設置django創建表時會自動加上:id = meta.AutoField(‘ID’, primary_key=True) 
primary_key=True implies blank=False, null=False and unique=True. Only one primary key is allowed on an object.

radio_admin
用於 admin 模式下將 select 轉換為 radio 顯示。只用於 ForeignKey 或者設置了choices

unique
boolean值,數據是否進行唯一性驗證;

unique_for_date
字元串類型,值指向一個DateTimeField 或者 一個 DateField的列名稱。日期唯一,如下例中系統將不允許title和pub_date兩個都相同的數據重覆出現 
title = meta.CharField( maxlength=30, unique_for_date=’pub_date’ )

unique_for_month / unique_for_year
用法同上

verbose_name
string類型。更人性化的列名。

validators
有效性檢查。無效則拋出 django.core.validators.ValidationError 異常。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第四章 分詞 下雨天留客天留我不留 本打算先介紹“簡單搜索”,對ES的搜索有一個直觀的感受。但在寫的過程中發現分詞無論如何都繞不過去。 查詢, 查詢都與分詞息息相關,索性先介紹分詞。 ES作為一個開源的搜索引擎,其核心自然在於搜索,而搜索不同於我們在MySQL中的 查詢語句,無論我們在百度搜索一個關 ...
  • [TOC] 一、分散式事務前奏 事務:事務是由一組操作構成的可靠的獨立的工作單元,事務具備ACID的特性,即原子性、一致性、隔離性和持久性。 本地事務:當事務由資源管理器本地管理時被稱作本地事務。本地事務的優點就是支持嚴格的ACID特性,高效,可靠,狀態可以只在資源管理器中維護,而且應用編程模型簡單 ...
  • 開篇:自己自學java拖拖拉拉的也有半年了,一學期里有很多事讓我停止學習java,轉眼間開學就要大四找工作了,想用一個暑假好好學習一些java,想掌握一門技術讓自己餓不死。本想每天寫一些筆記總結,發現那樣的話太費時間了,即便寫了,我自己都不看。最後,我決定還是以題的形式寫成文章,方便自己複習,同時也 ...
  • Sentinel API Github : "WIKI " Sphu (指明要保護的資源名稱) Tracer (指明調用來源,異常統計介面) ContextUtil(標示進入調用鏈入口) 流控規則(針對來源屬性) 降級規則 Sentinel Annotation 源碼: & 使用該註解重構上述方法 ...
  • 因為盤搜搜索出來的鏈接有很多已經失效了,影響找數據的效率,因此想到了用爬蟲來過濾出有效的鏈接,順便練練手~ 這是本次爬取的目標網址http://www.pansou.com,首先先搜索個python,之後打開開發者工具, 可以發現這個鏈接下的json數據就是我們要爬取的數據了,把多餘的參數去掉, 剩 ...
  • 1、多態介紹 面向對象三大特征:封裝、繼承、多態。多態是Java面向對象最核心,最難以理解的內容。從一定角度來看,封裝和繼承幾乎都是為多態而準備的。 多態就是指程式中定義的引用變數所指向的具體類型和通過該引用變數發出的方法調用在編譯時並不確定,而是在程式運行期間才確定,即一個引用變數倒底會指向哪個類 ...
  • Java中最基本的單位是類,Java中用class描述事物也是如此 成員變數 就是事物的屬性 成員方法 就是事物的行為 成員變數 就是事物的屬性 成員方法 就是事物的行為 定義類其實就是定義類的成員(成員變數和成員方法) a:成員變數 和以前定義變數是一樣的,只不過位置發生了改變。在類中,方法外。 ...
  • 動態代理 特點:位元組碼隨用隨創建,隨用隨載入 作用:不修改源碼的基礎上對方法增強 分類: ​ 基於介面的動態代理 ​ 基於子類的動態代理 基於介面的動態代理: 涉及的類:Proxy 如何創建代理對象: ​ 使用Proxy類中的newProxyInstance方法 創建代理對象的要求:被代理的類最少實 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...