[TOC]
普通字段
AutoField(自增字段)
一個根據(jù)實際ID自動增長的的整型字段,默認不需要使用,因為會自動添加一個主鍵字段
BinaryField(二進制字段)
只支持bytes賦值
BooleanField(Bool字段)
表單控件是CheckboxInput
如果沒設(shè)置default 默認值為None
NullBooleanField(Bool字段)
用以代替null=True的BooleanField, 表單控件是 NullBooleanSelect
數(shù)字
FloatField(浮點數(shù))
浮點數(shù)字段
IntegerField(整數(shù))
32位的整數(shù),范圍 -2147483648 到 2147483647(-231~231-1)
BigIntegerField(大整數(shù)字段)
64位的整數(shù),范圍 -9223372036854775808 到9223372036854775807(-263~263-1)
PositiveIntegerField(正整數(shù)字段)
范圍依據(jù)具體數(shù)據(jù)庫而定 但范圍 02147483647(02^31-1)內(nèi)是所有數(shù)據(jù)庫都ok的
SmallIntegerField(小整數(shù)字段)
范圍依據(jù)具體數(shù)據(jù)庫而定 但范圍 -32768 至 32767(-2152^15-1)內(nèi)是所有數(shù)據(jù)庫都ok的
PositiveSmallIntegerField(小正整數(shù)字段)
范圍依據(jù)具體數(shù)據(jù)庫而定 但范圍 02147483647(02^31-1)內(nèi)是所有數(shù)據(jù)庫都ok的
DecimalField(精確位數(shù)的小數(shù))
max_digits指定總位數(shù):decimal_places 指定小數(shù)點后的位數(shù)
CommaSeparatedIntegerField(逗號分割的整數(shù))
像CharField一樣 需要一個max_length
字符串及其變形
CharField(字符串)
必須設(shè)置max_length
SlugField(短標題字段)
只能包含字母 數(shù)字 下劃線 或者連字符 默認加了max_length=50
TextField(文本框字段)
大文本字段,默認表單組件是Textarea,可以使用max_length但只會在渲染Textarea的時候體現(xiàn)出來汗贫,不會在model層或數(shù)據(jù)庫層起作用
URLField(網(wǎng)址字段)
有效的url,如果不指定max_length 默認200
EmailField(郵件字段)
使用EmailValidator對類型做檢查
GenericIPAddressField(IP地址)
1.7之前可以用IPAddressField表明IPv4字段豹休,但1.7之后把IPv4和IPv6統(tǒng)一劃到了這里
此字段類型還提供了一些額外的屬性:
- protocol 指明IP地址類型 一共有三個可選擇:both:兼容IPV4和IPV6(默認); ipv4;ipv6(不區(qū)分大小寫)
- unpack_ipv4 解析ipv6地址為ipv4(默認false),當(dāng) protocol 設(shè)置為 both 方可使用
- 注意 如果設(shè)置了blank=True 則同時需要設(shè)置null=True
UUID(唯一性)
使用python的UUID庫
一個用來存儲UUID的字段传泊。使用Python的UUID類媒鼓。 當(dāng)使用PostgreSQL數(shù)據(jù)庫時宵晚,該字段類型對應(yīng)的數(shù)據(jù)庫中的數(shù)據(jù)類型是uuid闺鲸,使用其他數(shù)據(jù)庫時瞻赶,數(shù)據(jù)庫對應(yīng)的是char(32)類型往堡。
使用UUID類型相對于使用具有primary_key參數(shù)的AutoField類型是一個更好的解決方案械荷。 數(shù)據(jù)庫不會自動生成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是一個可調(diào)用的對象(即一個省略了括號的方法)虑灰,而不是傳遞一個UUID實例給default