91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django中ORM模型常用的字段的使用方法

發布時間:2020-08-19 16:30:25 來源:腳本之家 閱讀:132 作者:小短腿電工 欄目:開發技術

與數據類型相關的字段

CharField
        作用:字符串字段, 用于較短的字符串.
        參數:CharField 要求必須有一個參數 maxlength, 用于從數據庫層和Django校驗層限制該字段所允許的最大字符數.

IntegerField
       作用:用于保存一個整數.

CommaSeparatedIntegerField
        作用:用于存放逗號分隔的整數值. 類似 CharField, 必須要有maxlength參數.

FloatField
        作用:一個浮點數,必須提供兩個參數:        
        參數:max_digits,總位數(不包括小數點和符號), decimal_places,小數位數.
        示例1:要保存最大值為 999 (小數點后保存2位),你要這樣定義字段:
              models.FloatField(..., max_digits=5, decimal_places=2)
        示例2:要保存最大值一百萬(小數點后保存10位)的話,你要這樣定義: 
              models.FloatField(..., max_digits=19, decimal_places=10)
              admin 用一個文本框(<input type="text">)表示該字段保存的數據

與時間相關的字段

DateField
        一個日期字段. 共有下列額外的可選參數:
        Argument    描述
        auto_now    當對象被保存時,自動將該字段的值設置為當前時間.通常用于表示 "last-modified" 時間戳.
        auto_now_add    當對象首次被創建時,自動將該字段的值設置為當前時間.通常用于表示對象創建時間.
        (僅僅在admin中有意義...) 

DateTimeField
         一個日期時間字段. 類似 DateField 支持同樣的附加選項.

與布爾值相關的字段

BooleanField
        A true/false field. admin用checkbox 來表示此類字段.

NullBooleanField
       類似 BooleanField, 不過允許 NULL 作為其中一個選項. 推薦使用這個字段而不要用 BooleanField 加 null=True 選項
       admin 用一個選擇框 <select> (三個可選擇的值: "Unknown", "Yes" 和 "No" ) 來表示這種字段數據.

與校驗相關的字段

IPAddressField
        一個字符串形式的 IP 地址, (i.e. "24.124.1.30").

EmailField
        一個帶有檢查Email合法性的 CharField,不接受 maxlength 參數.

XMLField
        一個校驗值是否為合法XML的 TextField,必須提供參數: schema_path, 它是一個用來校驗文本的 RelaxNG schema #的文件系統路徑.

與上傳相關的字段

FileField
     作用:
          一個文件上傳字段,要求一個必須有的參數
     參數:
          upload_to, 一個用于保存上載文件的本地文件系統路徑. 這個路徑必須包含 strftime #formatting,
          該格式將被上載文件的 date/time替換(so that uploaded files don't fill up the given directory).
     說明:
          admin 用一個<input type="file">部件表示該字段保存的數據(一個文件上傳部件) .

ImageField
     作用: 類似FileField,不過要校驗上傳對象是否是一個合法圖片.
     參數: 它有兩個可選參數:height_field和width_field, 如果提供這兩個參數, 則圖片將按提供的高度和寬度規格保存.
注意事項:
     在一個model中使用FileField或ImageField需要以下步驟:
     (1)在你的settings文件中,定義一個完整路徑給MEDIA_ROOT以便讓Django在此處保存上傳文件.
          (出于性能考慮,這些文件并不保存到數據庫) 定義MEDIA_URL 作為該目錄的公共 URL.要確保該目錄對WEB服務器用戶帳號是可寫的.
     (2)在你的model中添加FileField或ImageField,并確保定義了upload_to選項,以告訴 Django使用MEDIA_ROOT的哪個子目錄保存上傳文件.
          你的數據庫中要保存的只是文件的路徑(相對于 MEDIA_ROOT).
          出于習慣你一定很想使用 Django 提供的 get_<#fieldname>_url 函數.
          舉例來說,如果你的 ImageField叫作 mug_shot, 你就可以在模板中以 {{ object.#get_mug_shot_url }} 這樣的方式得到圖像的絕對路徑.

不好分類的字段

AutoField
        一個 IntegerField, 添加記錄時它會自動增長. 你通常不需要直接使用這個字段;
        自定義一個主鍵:my_id=models.AutoField(primary_key=True)
        如果你不指定主鍵的話,系統會自動添加一個主鍵字段到你的 model.

TextField
        一個容量很大的文本字段.
        admin 用一個 <textarea> (文本區域)表示該字段數據.(一個多行編輯框).

URLField
      作用: 用于保存 URL, 若verify_exists參數為True(默認), 給定的 URL 會預先檢查是否存在( 即URL是否被有效裝入且沒有返回404響應).
      admin 用一個 <input type="text"> 文本框表示該字段保存的數據(一個單行編輯框)

FilePathField

模型常用屬性

常用字段:

在 Django 中,定義了一些 Field 來與數據庫表中的字段類型來進行映射。以下將介紹那些常用的字段類型。會出現與上面重疊介紹。

AutoField:
映射到數據庫中是 int 類型,可以有自動增長的特性。一般不需要使用這個類型,如果不指定主鍵,那么模型會自動的生成一個叫做 id 的自動增長的主鍵。如果你想指定一個其他名字的并且具有自動增長的主鍵,使用 AutoField 也是可以的。

BigAutoField:
64位的整形,類似于 AutoField ,只不過是產生的數據的范圍是從 1-9223372036854775807 。

BooleanField:
在模型層面接收的是 True/False 。在數據庫層面是 tinyint 類型。如果沒有指定默認值,默認值是 None 。

CharField:
在數據庫層面是 varchar 類型。在 Python 層面就是普通的字符串。這個類型在使用的時候必須要指定最大的長度,也即必須要傳遞 max_length 這個關鍵字參數進去。

DateField:
日期類型。在 Python 中是 datetime.date 類型,可以記錄年月日。在映射到數據庫中也是 date 類型。使用這個 Field 可以傳遞以下幾個參數:

  • auto_now :在每次這個數據保存的時候,都使用當前的時間。比如作為一個記錄修改日期的字段,可以將這個屬性設置為 True 。
  • auto_now_add :在每次數據第一次被添加進去的時候,都使用當前的時間。比如作為一個記錄第一次入庫的字段,可以將這個屬性設置為 True 。

DateTimeField:
日期時間類型,類似于 DateField 。不僅僅可以存儲日期,還可以存儲時間。映射到數據庫中是 datetime 類型。這個 Field 也可以使用 auto_now 和 auto_now_add 兩個屬性。

TimeField:
時間類型。在數據庫中是 time 類型。在 Python 中是 datetime.time 類型。

EmailField:
類似于 CharField 。在數據庫底層也是一個 varchar 類型。最大長度是254個字符。

FileField:
用來存儲文件的。這個請參考后面的文件上傳章節部分。

ImageField:
用來存儲圖片文件的。這個請參考后面的圖片上傳章節部分。

FloatField:
浮點類型。映射到數據庫中是 float 類型。

IntegerField:
整形。值的區間是 -2147483648——2147483647 。

BigIntegerField:
大整形。值的區間是 -9223372036854775808——9223372036854775807 。

PositiveIntegerField:
正整形。值的區間是 0——2147483647 。

SmallIntegerField:
小整形。值的區間是 -32768——32767 。

PositiveSmallIntegerField:
正小整形。值的區間是 0——32767 。

TextField:
大量的文本類型。映射到數據庫中是longtext類型。

UUIDField:
只能存儲 uuid 格式的字符串。 uuid 是一個32位的全球唯一的字符串,一般用來作為主鍵。

URLField:
類似于 CharField ,只不過只能用來存儲 url 格式的字符串。并且默認的 max_length 是200。

Field的常用參數:
null:如果設置為 True , Django 將會在映射表的時候指定是否為空。默認是為 False 。在使用字符串相關的 Field (CharField/TextField)的時候,官方推薦盡量不要使用這個參數,也就是保持默認值 False 。因為 Django 在處理字符串相關的 Field 的時候,即使這個 Field 的 null=False ,如果你沒有給這個 Field 傳遞任何值,那么 Django 也會使用一個空的字符串 "" 來作為默認值存儲進去。因此如果再使用 null=True , Django 會產生兩種空值的情形(NULL或者空字符串)。如果想要在表單驗證的時候允許這個字符串為空,那么建議使用 blank=True 。如果你的 Field 是 BooleanField ,那么對應的可空的字段則為 NullBooleanField 。

blank:標識這個字段在表單驗證的時候是否可以為空。默認是False。這個和null是有區別的,null是一個純數據庫級別的。而blank是表單驗證級別的。db_column:這個字段在數據庫中的名字。如果沒有設置這個參數,那么將會使用模型中屬性的名字。default:默認值。可以為一個值,或者是一個函數,但是不支持lambda表達式。并且不支持列表/字典/集合等可變的數據結構。primary_key:是否為主鍵。默認是False。unique:在表中這個字段的值是否唯一。一般是設置手機號碼/郵箱等。更多Field參數請參考官方文檔: https://docs.djangoproject.com/zh-hans/2.0/ref/models/fields/ 模型中Meta配置:對于一些模型級別的配置。我們可以在模型中定義一個類,叫做Meta。然后在這個類中添加一些類屬性來控制模型的作用。比如我們想要在數據庫映射的時候使用自己指定的表名,而不是使用模型的名稱。那么我們可以在Meta類中添加一個db_table的屬性。示例代碼如下:

class Book(models.Model):
 name = models.CharField(max_length=20,null=False)
 desc = models.CharField(max_length=100,name='description',db_column="description1")

 class Meta:
  db_table = 'book_model'

以下將對Meta類中的一些常用配置進行解釋。db_table:這個模型映射到數據庫中的表名。如果沒有指定這個參數,那么在映射的時候將會使用模型名來作為默認的表名。ordering:設置在提取數據的排序方式。后面章節會講到如何查找數據。比如我想在查找數據的時候根據添加的時間排序,那么示例代碼如下:

class Book(models.Model):
 name = models.CharField(max_length=20,null=False)
 desc = models.CharField(max_length=100,name='description',db_column="description1")
 pub_date = models.DateTimeField(auto_now_add=True)

 class Meta:
  db_table = 'book_model'
  ordering = ['pub_date']

更多的配置后面會慢慢介紹到。 官方文檔: https://docs.djangoproject.com/en/2.0/ref/models/options/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁国市| 清水县| 晋江市| 衡阳市| 南充市| 夹江县| 太谷县| 松潘县| 崇明县| 大姚县| 无棣县| 永平县| 当阳市| 永新县| 玉林市| 康乐县| 体育| 扎囊县| 湘西| 安庆市| 垦利县| 栾川县| 双桥区| 徐闻县| 台中市| 藁城市| 登封市| 沁阳市| 辽阳县| 巨鹿县| 卫辉市| 台南市| 威远县| 阿鲁科尔沁旗| 五大连池市| 四子王旗| 晋宁县| 淳化县| 明溪县| 滦南县| 当雄县|