11.字段類型

[TOC]

普通字段

AutoField(自增字段)

一個(gè)根據(jù)實(shí)際ID自動(dòng)增長(zhǎng)的的整型字段,默認(rèn)不需要使用,因?yàn)闀?huì)自動(dòng)添加一個(gè)主鍵字段

BinaryField(二進(jìn)制字段)

只支持bytes賦值

BooleanField(Bool字段)

表單控件是CheckboxInput
如果沒(méi)設(shè)置default 默認(rèn)值為None

NullBooleanField(Bool字段)

用以代替null=True的BooleanField, 表單控件是 NullBooleanSelect

數(shù)字

FloatField(浮點(diǎn)數(shù))

浮點(diǎn)數(shù)字段

IntegerField(整數(shù))

32位的整數(shù),范圍 -2147483648 到 2147483647(-231~231-1)

BigIntegerField(大整數(shù)字段)

64位的整數(shù),范圍 -9223372036854775808 到9223372036854775807(-263~263-1)

PositiveIntegerField(正整數(shù)字段)

范圍依據(jù)具體數(shù)據(jù)庫(kù)而定 但范圍 02147483647(02^31-1)內(nèi)是所有數(shù)據(jù)庫(kù)都o(jì)k的

SmallIntegerField(小整數(shù)字段)

范圍依據(jù)具體數(shù)據(jù)庫(kù)而定 但范圍 -32768 至 32767(-2152^15-1)內(nèi)是所有數(shù)據(jù)庫(kù)都o(jì)k的

PositiveSmallIntegerField(小正整數(shù)字段)

范圍依據(jù)具體數(shù)據(jù)庫(kù)而定 但范圍 02147483647(02^31-1)內(nèi)是所有數(shù)據(jù)庫(kù)都o(jì)k的

DecimalField(精確位數(shù)的小數(shù))

max_digits指定總位數(shù):decimal_places 指定小數(shù)點(diǎn)后的位數(shù)

CommaSeparatedIntegerField(逗號(hào)分割的整數(shù))

像CharField一樣 需要一個(gè)max_length

字符串及其變形

CharField(字符串)

必須設(shè)置max_length

SlugField(短標(biāo)題字段)

只能包含字母 數(shù)字 下劃線 或者連字符 默認(rèn)加了max_length=50

TextField(文本框字段)

大文本字段,默認(rèn)表單組件是Textarea,可以使用max_length但只會(huì)在渲染Textarea的時(shí)候體現(xiàn)出來(lái),不會(huì)在model層或數(shù)據(jù)庫(kù)層起作用

URLField(網(wǎng)址字段)

有效的url,如果不指定max_length 默認(rèn)200

EmailField(郵件字段)

使用EmailValidator對(duì)類型做檢查

GenericIPAddressField(IP地址)

1.7之前可以用IPAddressField表明IPv4字段,但1.7之后把IPv4和IPv6統(tǒng)一劃到了這里
此字段類型還提供了一些額外的屬性:

  • protocol 指明IP地址類型 一共有三個(gè)可選擇:both:兼容IPV4和IPV6(默認(rèn)); ipv4;ipv6(不區(qū)分大小寫)
  • unpack_ipv4 解析ipv6地址為ipv4(默認(rèn)false),當(dāng) protocol 設(shè)置為 both 方可使用
  • 注意 如果設(shè)置了blank=True 則同時(shí)需要設(shè)置null=True

UUID(唯一性)

使用python的UUID庫(kù)
一個(gè)用來(lái)存儲(chǔ)UUID的字段。使用Python的UUID類。 當(dāng)使用PostgreSQL數(shù)據(jù)庫(kù)時(shí),該字段類型對(duì)應(yīng)的數(shù)據(jù)庫(kù)中的數(shù)據(jù)類型是uuid,使用其他數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)對(duì)應(yīng)的是char(32)類型。

使用UUID類型相對(duì)于使用具有primary_key參數(shù)的AutoField類型是一個(gè)更好的解決方案。 數(shù)據(jù)庫(kù)不會(huì)自動(dòng)生成UUID,所以推薦使用default參數(shù):

import uuid
from django.db import models

class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    # other fields

注意:這里傳遞給default是一個(gè)可調(diào)用的對(duì)象(即一個(gè)省略了括號(hào)的方法),而不是傳遞一個(gè)UUID實(shí)例給default

時(shí)間類型

DateField(日期)

TimeField(時(shí)間)

DateTimeField(日期時(shí)間格式)

DurationField(一段時(shí)間)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 簡(jiǎn)介 用簡(jiǎn)單的話來(lái)定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 6,061評(píng)論 1 13
  • IPv6是Internet Protocol Version 6的縮寫,其中Internet Protocol譯為...
    全能分享閱讀 2,358評(píng)論 0 3
  • 停用qq空間和朋友圈就是為了不去做無(wú)意義的事,我要看有趣而有用的東西,為了兩年后自己,加油!我相信我可以做到!晚安!
    sicily涵閱讀 181評(píng)論 0 0
  • 烈日正午,街邊的拉面館 點(diǎn)了一盤蓋澆飯,等…… 忽然就想起最近的一些事和一些人,喝口熱湯暖一下。 彼此能在茫茫人海...
    imjax閱讀 297評(píng)論 0 0

友情鏈接更多精彩內(nèi)容