欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年03月05日 11:25:45   作者:小短腿電工  
這篇文章主要介紹了django中ORM模型常用的字段的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

與數(shù)據(jù)類型相關(guān)的字段

CharField
        作用:字符串字段, 用于較短的字符串.
        參數(shù):CharField 要求必須有一個(gè)參數(shù) maxlength, 用于從數(shù)據(jù)庫(kù)層和Django校驗(yàn)層限制該字段所允許的最大字符數(shù).

IntegerField
       作用:用于保存一個(gè)整數(shù).

CommaSeparatedIntegerField
        作用:用于存放逗號(hào)分隔的整數(shù)值. 類似 CharField, 必須要有maxlength參數(shù).

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

與時(shí)間相關(guān)的字段

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

DateTimeField
         一個(gè)日期時(shí)間字段. 類似 DateField 支持同樣的附加選項(xiàng).

與布爾值相關(guān)的字段

BooleanField
        A true/false field. admin用checkbox 來(lái)表示此類字段.

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

與校驗(yàn)相關(guān)的字段

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

EmailField
        一個(gè)帶有檢查Email合法性的 CharField,不接受 maxlength 參數(shù).

XMLField
        一個(gè)校驗(yàn)值是否為合法XML的 TextField,必須提供參數(shù): schema_path, 它是一個(gè)用來(lái)校驗(yàn)文本的 RelaxNG schema #的文件系統(tǒng)路徑.

與上傳相關(guān)的字段

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

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

不好分類的字段

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

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

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

FilePathField

模型常用屬性

常用字段:

在 Django 中,定義了一些 Field 來(lái)與數(shù)據(jù)庫(kù)表中的字段類型來(lái)進(jìn)行映射。以下將介紹那些常用的字段類型。會(huì)出現(xiàn)與上面重疊介紹。

AutoField:
映射到數(shù)據(jù)庫(kù)中是 int 類型,可以有自動(dòng)增長(zhǎng)的特性。一般不需要使用這個(gè)類型,如果不指定主鍵,那么模型會(huì)自動(dòng)的生成一個(gè)叫做 id 的自動(dòng)增長(zhǎng)的主鍵。如果你想指定一個(gè)其他名字的并且具有自動(dòng)增長(zhǎng)的主鍵,使用 AutoField 也是可以的。

BigAutoField:
64位的整形,類似于 AutoField ,只不過(guò)是產(chǎn)生的數(shù)據(jù)的范圍是從 1-9223372036854775807 。

BooleanField:
在模型層面接收的是 True/False 。在數(shù)據(jù)庫(kù)層面是 tinyint 類型。如果沒(méi)有指定默認(rèn)值,默認(rèn)值是 None 。

CharField:
在數(shù)據(jù)庫(kù)層面是 varchar 類型。在 Python 層面就是普通的字符串。這個(gè)類型在使用的時(shí)候必須要指定最大的長(zhǎng)度,也即必須要傳遞 max_length 這個(gè)關(guān)鍵字參數(shù)進(jìn)去。

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

  • auto_now :在每次這個(gè)數(shù)據(jù)保存的時(shí)候,都使用當(dāng)前的時(shí)間。比如作為一個(gè)記錄修改日期的字段,可以將這個(gè)屬性設(shè)置為 True 。
  • auto_now_add :在每次數(shù)據(jù)第一次被添加進(jìn)去的時(shí)候,都使用當(dāng)前的時(shí)間。比如作為一個(gè)記錄第一次入庫(kù)的字段,可以將這個(gè)屬性設(shè)置為 True 。

DateTimeField:
日期時(shí)間類型,類似于 DateField 。不僅僅可以存儲(chǔ)日期,還可以存儲(chǔ)時(shí)間。映射到數(shù)據(jù)庫(kù)中是 datetime 類型。這個(gè) Field 也可以使用 auto_now 和 auto_now_add 兩個(gè)屬性。

TimeField:
時(shí)間類型。在數(shù)據(jù)庫(kù)中是 time 類型。在 Python 中是 datetime.time 類型。

EmailField:
類似于 CharField 。在數(shù)據(jù)庫(kù)底層也是一個(gè) varchar 類型。最大長(zhǎng)度是254個(gè)字符。

FileField:
用來(lái)存儲(chǔ)文件的。這個(gè)請(qǐng)參考后面的文件上傳章節(jié)部分。

ImageField:
用來(lái)存儲(chǔ)圖片文件的。這個(gè)請(qǐng)參考后面的圖片上傳章節(jié)部分。

FloatField:
浮點(diǎn)類型。映射到數(shù)據(jù)庫(kù)中是 float 類型。

IntegerField:
整形。值的區(qū)間是 -2147483648——2147483647 。

BigIntegerField:
大整形。值的區(qū)間是 -9223372036854775808——9223372036854775807 。

PositiveIntegerField:
正整形。值的區(qū)間是 0——2147483647 。

SmallIntegerField:
小整形。值的區(qū)間是 -32768——32767 。

PositiveSmallIntegerField:
正小整形。值的區(qū)間是 0——32767 。

TextField:
大量的文本類型。映射到數(shù)據(jù)庫(kù)中是longtext類型。

UUIDField:
只能存儲(chǔ) uuid 格式的字符串。 uuid 是一個(gè)32位的全球唯一的字符串,一般用來(lái)作為主鍵。

URLField:
類似于 CharField ,只不過(guò)只能用來(lái)存儲(chǔ) url 格式的字符串。并且默認(rèn)的 max_length 是200。

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

blank:標(biāo)識(shí)這個(gè)字段在表單驗(yàn)證的時(shí)候是否可以為空。默認(rèn)是False。這個(gè)和null是有區(qū)別的,null是一個(gè)純數(shù)據(jù)庫(kù)級(jí)別的。而blank是表單驗(yàn)證級(jí)別的。db_column:這個(gè)字段在數(shù)據(jù)庫(kù)中的名字。如果沒(méi)有設(shè)置這個(gè)參數(shù),那么將會(huì)使用模型中屬性的名字。default:默認(rèn)值。可以為一個(gè)值,或者是一個(gè)函數(shù),但是不支持lambda表達(dá)式。并且不支持列表/字典/集合等可變的數(shù)據(jù)結(jié)構(gòu)。primary_key:是否為主鍵。默認(rèn)是False。unique:在表中這個(gè)字段的值是否唯一。一般是設(shè)置手機(jī)號(hào)碼/郵箱等。更多Field參數(shù)請(qǐng)參考官方文檔: https://docs.djangoproject.com/zh-hans/2.0/ref/models/fields/ 模型中Meta配置:對(duì)于一些模型級(jí)別的配置。我們可以在模型中定義一個(gè)類,叫做Meta。然后在這個(gè)類中添加一些類屬性來(lái)控制模型的作用。比如我們想要在數(shù)據(jù)庫(kù)映射的時(shí)候使用自己指定的表名,而不是使用模型的名稱。那么我們可以在Meta類中添加一個(gè)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'

以下將對(duì)Meta類中的一些常用配置進(jìn)行解釋。db_table:這個(gè)模型映射到數(shù)據(jù)庫(kù)中的表名。如果沒(méi)有指定這個(gè)參數(shù),那么在映射的時(shí)候?qū)?huì)使用模型名來(lái)作為默認(rèn)的表名。ordering:設(shè)置在提取數(shù)據(jù)的排序方式。后面章節(jié)會(huì)講到如何查找數(shù)據(jù)。比如我想在查找數(shù)據(jù)的時(shí)候根據(jù)添加的時(shí)間排序,那么示例代碼如下:

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']

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python:print格式化輸出到文件的實(shí)例

    python:print格式化輸出到文件的實(shí)例

    今天小編就為大家分享一篇python:print格式化輸出到文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 詳解Python?NumPy如何使用argsort方法進(jìn)行排序

    詳解Python?NumPy如何使用argsort方法進(jìn)行排序

    NumPy提供了各種功能強(qiáng)大的數(shù)組操作方法,其中之一就是argsort方法,本文將詳細(xì)介紹argsort方法的使用,以及如何在實(shí)際項(xiàng)目中充分利用它進(jìn)行排序操作,希望對(duì)大家有所幫助
    2024-03-03
  • python中不能連接超時(shí)的問(wèn)題及解決方法

    python中不能連接超時(shí)的問(wèn)題及解決方法

    這篇文章主要介紹了python中不能連接超時(shí)的問(wèn)題及解決方法,需要的朋友可以參考下
    2018-06-06
  • Python Flask入門

    Python Flask入門

    今天小編就為大家分享一篇Python Flask的入門教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-11-11
  • Python元組Tuple常用函數(shù)詳解

    Python元組Tuple常用函數(shù)詳解

    Python元組Tuple使用小括號(hào)()包裹,元素之間使用逗號(hào),間隔,元組與列表相似,但元組的元素不可變,本文就給大家詳細(xì)介紹一下元組的常用函數(shù)以及基本操作,感興趣的朋友可以參考閱讀下
    2023-07-07
  • python計(jì)算列表元素與乘積詳情

    python計(jì)算列表元素與乘積詳情

    這篇文章主要介紹了python計(jì)算列表元素與乘積,文章圍繞主題展開(kāi)詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生管理系統(tǒng)

    python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 對(duì)python的文件內(nèi)注釋 help注釋方法

    對(duì)python的文件內(nèi)注釋 help注釋方法

    今天小編就為大家分享一篇對(duì)python的文件內(nèi)注釋 help注釋方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 基于Python實(shí)現(xiàn)撲克牌面試題

    基于Python實(shí)現(xiàn)撲克牌面試題

    這篇文章主要介紹了基于Python實(shí)現(xiàn)撲克牌面試題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python使用Selenium實(shí)現(xiàn)模擬登錄的示例代碼

    Python使用Selenium實(shí)現(xiàn)模擬登錄的示例代碼

    Selenium(本文基于python3.8)是一個(gè)功能強(qiáng)大的自動(dòng)化測(cè)試工具,它可以用于模擬用戶在瀏覽器中的行為,比如點(diǎn)擊、輸入、滾動(dòng)等等,本教程將詳細(xì)介紹如何使用Python編寫一個(gè)模擬登錄地爬蟲,使用XPath等多種元素匹配方法,需要的朋友可以參考下
    2023-08-08

最新評(píng)論