[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