真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Django ORM 常用字段和參數(shù)

一、models中的常用字段類型


字段類型

成都創(chuàng)新互聯(lián)公司專注于長(zhǎng)豐網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供長(zhǎng)豐營(yíng)銷型網(wǎng)站建設(shè),長(zhǎng)豐網(wǎng)站制作、長(zhǎng)豐網(wǎng)頁(yè)設(shè)計(jì)、長(zhǎng)豐網(wǎng)站官網(wǎng)定制、小程序定制開(kāi)發(fā)服務(wù),打造長(zhǎng)豐網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供長(zhǎng)豐網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

類型 說(shuō)明
AutoField 自動(dòng)增長(zhǎng)的 IntegerField,通常不用指定,不指定時(shí)Django會(huì)自動(dòng)創(chuàng)建屬性名為 id 的自動(dòng)增長(zhǎng)屬性
BooleanField 布爾字段,值為T(mén)rue 或 False
NullBooleanField 支持Null、True、False三種值
CharField 字符串,參數(shù)max_length表示最大字符個(gè)數(shù),對(duì)應(yīng)mysql中的varchar。
TextField 大文本字段,一般大段文本(超過(guò)4000個(gè)字符)才使用。
IntegerField 整數(shù)
BigIntegerField 長(zhǎng)整型(有符號(hào)的)
DecimalField 十進(jìn)制浮點(diǎn)數(shù), 參數(shù)max_digits表示總位數(shù), 參數(shù)decimal_places表示小數(shù)位數(shù),常用于表示分?jǐn)?shù)和價(jià)格 Decimal(max_digits=7, decimal_places=2) ==> .99~ 0.00
FloatField 浮點(diǎn)數(shù)
DateField 日期
參數(shù) auto_now 表示每次保存對(duì)象時(shí),自動(dòng)設(shè)置該字段為當(dāng)前時(shí)間。
參數(shù) auto_now_add 表示當(dāng)對(duì)象第一次被創(chuàng)建時(shí)自動(dòng)設(shè)置當(dāng)前。
參數(shù) auto_now_add 和 auto_now 是相互排斥的,一起使用會(huì)發(fā)生錯(cuò)誤。
TimeField 時(shí)間,參數(shù)同 DateField。
DateTimeField 日期時(shí)間,參數(shù)同 DateField。
FileField 上傳文件字段,django在文件字段中內(nèi)置了文件上傳保存類, django可以通過(guò)模型的字段存儲(chǔ)自動(dòng)保存上傳文件, 但是, 在數(shù)據(jù)庫(kù)中本質(zhì)上保存的僅僅是文件在項(xiàng)目中的存儲(chǔ)路徑??!
ImageField 繼承于 FileField,對(duì)上傳的內(nèi)容進(jìn)行校驗(yàn),確保是有效的圖片。
EmailField 字符串類型,和郵箱相關(guān)

二、約束選項(xiàng)


選項(xiàng) 說(shuō)明
null 如果為T(mén)rue,表示允許為空,默認(rèn)值是False。相當(dāng)于python的None。
blank 如果為T(mén)rue,則該字段允許為空白,默認(rèn)值是False。 相當(dāng)于python的空字符串,“”
db_column 字段的名稱,如果未指定,則使用屬性的名稱。
db_index 若值為T(mén)rue, 則在表中會(huì)為此字段創(chuàng)建索引,默認(rèn)值是False。 相當(dāng)于SQL語(yǔ)句中的key。
default 默認(rèn)值,當(dāng)不填寫(xiě)數(shù)據(jù)時(shí),使用該選項(xiàng)的值作為數(shù)據(jù)的默認(rèn)值。
primary_key 如果為T(mén)rue,則該字段會(huì)成為模型的主鍵,默認(rèn)值是False,一般不用設(shè)置,系統(tǒng)默認(rèn)設(shè)置。
unique 如果為T(mén)rue,則該字段在表中必須有唯一值,默認(rèn)值是False。相當(dāng)于SQL語(yǔ)句中的unique。
max_length 最大字符長(zhǎng)度
verbose_name 對(duì)應(yīng)的名字,注釋
max_digits 數(shù)字允許的最大位數(shù)
decimal_places 小數(shù)的最大位數(shù)
to 設(shè)置關(guān)聯(lián)的表
to_field 設(shè)置關(guān)聯(lián)的字段
db_constraint 是否創(chuàng)建外鍵約束,默認(rèn)True
related_name 修改正向查詢的字段名,之后就可以使用修改后的字段名,類似于起別名
on_delete 當(dāng)刪除關(guān)聯(lián)表中的數(shù)據(jù)時(shí),當(dāng)前表與其關(guān)聯(lián)的行的行為

注意:null 是數(shù)據(jù)庫(kù)范疇的概念,blank 是表單驗(yàn)證范疇的。

外鍵

在設(shè)置外鍵時(shí),需要通過(guò) on_delete選項(xiàng)指明主表刪除數(shù)據(jù)時(shí),對(duì)于外鍵引用表數(shù)據(jù)如何處理,在django.db.models中包含了可選常量:

  • CASCADE 級(jí)聯(lián)操作,當(dāng)主表中被連接的一條數(shù)據(jù)刪除時(shí),從表中所有與之關(guān)聯(lián)的數(shù)據(jù)同時(shí)被刪除

  • PROTECT 當(dāng)主表中的一行數(shù)據(jù)刪除時(shí),由于從表中相關(guān)字段是受保護(hù)的外鍵,所以都不允許刪除

  • SET_NULL 當(dāng)主表中的一行數(shù)據(jù)刪除時(shí),從表中所有與之關(guān)聯(lián)的數(shù)據(jù)的相關(guān)字段設(shè)置為null,此時(shí)注意定義外鍵時(shí),這個(gè)字段必須可以允許為空

  • SET_DEFAULT 當(dāng)主表中的一行數(shù)據(jù)刪除時(shí),從表中所有相關(guān)的數(shù)據(jù)的關(guān)聯(lián)字段設(shè)置為默認(rèn)值,此時(shí)注意定義外鍵時(shí),這個(gè)外鍵字段應(yīng)該有一個(gè)默認(rèn)值

  • DO_NOTHING什么都不做,一切都看數(shù)據(jù)庫(kù)級(jí)別的約束,注數(shù)據(jù)庫(kù)級(jí)別的默認(rèn)約束為RESTRICT,這個(gè)約束與django中的models.PROTECT相似
  • SET() 當(dāng)主表中的一條數(shù)據(jù)刪除時(shí),從表中所有的關(guān)聯(lián)數(shù)據(jù)字段設(shè)置為SET()中設(shè)置的值,與models.SET_DEFAULT相似,只不過(guò)此時(shí)從表中的相關(guān)字段不需要設(shè)置default參數(shù)

def func():
    return 10

class MyModel(models.Model):
    user = models.ForeignKey(
        to = "User",
        to_field = "id",
        on_delete = models.SET(func)
    )

三、常用查詢


返回QuerySet對(duì)象

  • all() 查詢所有結(jié)果。
  • filter() 它包含了與所給篩選條件相匹配的對(duì)象。
  • exclude() 排除在外,它包含了與所給篩選條件不匹配的對(duì)象。
  • order_by() 對(duì)查詢結(jié)果排序,默認(rèn)升序/(-字段)降序。
  • reverse() 對(duì)查詢結(jié)果反向排序,前提是數(shù)據(jù)已經(jīng)排序過(guò)了order_by()。
  • distinct() 從返回結(jié)果中剔除重復(fù)紀(jì)錄。

返回對(duì)象

  • get() 返回與所給篩選條件相匹配的對(duì)象,返回結(jié)果有且只有一個(gè),如果符合篩選條件的對(duì)象超過(guò)一個(gè)或者沒(méi)有都會(huì)拋出錯(cuò)誤。
  • first() 返回第一條記錄
  • last() 返回最后一條記錄

返回布爾值

  • exists() 如果QuerySet包含數(shù)據(jù),就返回True,否則返回False。

返回?cái)?shù)字

  • count() 統(tǒng)計(jì)當(dāng)前數(shù)據(jù)的個(gè)數(shù)。

返回QuerySet

  • values() 返回一個(gè)ValueQuerySet,一個(gè)特殊的QuerySet,運(yùn)行后得到的并不是一系列model的實(shí)例化對(duì)象,而是一個(gè)可迭代的字典序列。
  • values_list() 它與values()非常相似,它返回的是一個(gè)元組序列,values返回的是一個(gè)字典序列。

四、雙下劃線


filter里是不能寫(xiě)邏輯運(yùn)算符的,而是給定了一個(gè)特定的方法去提供邏輯查詢,那就是雙下劃線。

返回值 = models.User.objects.filter(字段__contains = '條件')
方法 功能
字段__gt 大于
字段__lt 小于
字段__gte 大于等于
字段__lte 小于等于
字段__in 成員運(yùn)算、在什么里
字段__range 范圍查詢
字段__contains 模糊查詢,區(qū)分大小寫(xiě)
字段__icontains 模糊查詢,忽略大小寫(xiě)
字段__startswith 匹配開(kāi)頭
字段__endswith 匹配結(jié)尾
字段__regex 正則表達(dá)式
字段__year 按照年份篩選數(shù)據(jù)
字段__month 按照月份篩選數(shù)據(jù)
字段__day 按照天篩選數(shù)據(jù)

分享標(biāo)題:Django ORM 常用字段和參數(shù)
標(biāo)題網(wǎng)址:http://weahome.cn/article/dsogsjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部