字段類型
成都創(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) | 說(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)值
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ì)象
返回對(duì)象
返回布爾值
返回?cái)?shù)字
返回QuerySet
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ù) |