Djangomodel字段类型及选项解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Djangomodel字段类型及选项解析
转载⾃:
model field 类型
1、AutoField()
⾃增的IntegerField,通常不⽤⾃⼰设置,若没有设置主键,Django会⾃动添加它为主键字段,Django会⾃动给每张表添加⼀个⾃增的primary key。

2、BigIntegerField
64位整数, -9223372036854775808 到 9223372036854775807。

默认的显⽰widget 是 TextInput.
3、BinaryField ( Django 1.6 版本新增)
存储⼆进制数据。

不能使⽤ filter 函数获得 QuerySet
4、BooleanField()
True/False,默认的widget 是 CheckboxInput。

如果需要置空,则必须⽤ NullBooleanField 代替。

Django 1.6 修改:BooleanField 的默认值由 False 改为 None,在 default 属性未设置的情况下。

5、CharField(max_length=none[, **options])
储存字符串。

必须有 max_length 参数指定长度。

作⽤于数据层级和django数据验证层级。

默认的form widget 是 TextInput如果字符串巨长,推荐使⽤ TextField。

6、CommaSeparatedIntegerField(max_length=none[, **options])
存放由逗号间隔的整数序列。

必须有 max_length 参数。

7、DateField
⽇期,与python⾥的datetime.date 实例同。

有以下⼏个可选的选项,均为bool类型:
DateField.auto_now: 每次执⾏ save 操作的时候⾃动记录当前时间,常作为最近⼀次修改的时间使⽤。

注意:总是在执⾏save 操作的时候执⾏,⽆法覆盖。

DateField.auto_now_add: 第⼀次创建的时候添加当前时间。

常作为创建时间使⽤。

注意:每次create 都会调⽤。

默认的form widget 是 TextInput。

注意:设置auto_now 或者 auto_now_add 为 True 会导致当前⾃动拥有 editable=False 和 blank = True 设置。

8、DateTimeField([auto_now=False, auto_now_add=False, **options])
⽇期+时间。

与python⾥的 datetime.datetime 实例同。

常⽤附加选项和DateField⼀样。

默认 form widget 是⼀个 TextInput
9、DecimalField(max_digits=None,decimal_places=None[, **options])
⽤decimal实例表⽰固定精度的⼗进制数的字段,有两个必须参数,max_digits数字允许的最⼤位数,decimal_places⼩数的最⼤位数。

django后台⽤表⽰该字段,通常⽤来表⽰⾦额
10、EmailField([maxlength=75, **options])
在 CharField 基础上附加了邮件地址合法性验证。

不需要强制设定 max_length
注意:当前默认设置 max_length 是 75,虽然已经不符合标准,但未了向前兼容,未修改。

11、FileField(upload_to=None[, max_length=100, **options])
⽂件上传字段。

不⽀持 primary_key 和 unique 选项。

否则会报 TypeError 异常。

必须设置 FileField.upload_to 选项,这个是本地⽂件系统路径,附加在 MEDIA_ROOT 设置的后边,也就是 MEDIA_ROOT 下的⼦⽬录相对路径。

默认的form widget 是 FileInput。

12、FloatField
与 python ⾥的 float 实例相同,默认的 form widget 是 TextInput。

虽然 FloatField 与 DecimalField 都是表⽰实数,但却是不同的表现形式,FloatField ⽤的是 python d float 类型,但是 DecimalField ⽤的却是 Decimal 类型。

区别可见:
13、ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])
在 FileField 基础上加上是否是合法图⽚验证功能的⼀个类型。

除了 FileField 有的属性外,ImageField 另有 height 和 width 属性。

注意:需要安装 PIL 或者 Pillow 模块。

在数据库中同样表现为 varchar(100),可通过 max_length 改⼤⼩。

14、IntegerField
整数,默认的form widget 是 TextInput。

15、IPAddressField
IP地址,字符串类型,如 127.0.0.1。

默认 form widget 是 TextInput。

16、GenericIPAddressField
ip v4和ip v6地址表⽰,ipv6遵循RFC 4291section 2.2,
17、NullBooleanField
可以包含空值的布尔类型,相当于设置了null=True的BooleanField。

18、PositiveSmallIntegerField
正短整数或0类型,类似于PositiveIntegerField,取值范围依赖于数据库特性,[0 ,32767]的取值范围对Django所⽀持的数据库都是安全的。

19、PositiveIntegerField
正整数或0类型,取值范围为[0 ,2147483647]
20、SlugField
只能包含字母,数字,下划线和连字符的字符串,通常被⽤于URLs表⽰。

可选参数max_length=50,prepopulate_from⽤于指⽰在admin表单中的可选值。

db_index,默认为True。

21.SmallIntegerField
⼩整数字段,类似于IntegerField,取值范围依赖于数据库特性,[-32768 ,32767]的取值范围对Django所⽀持的数据库都是安全的。

22、TextField
⼤⽂本,巨长的⽂本。

默认的 form widget 是 Textarea。

23、TimeField
时间,对应Python的datetime.time
24、URLField
加了 URL 合法性验证的 CharField。

默认的 form widget 是 TextInput。

默认max_length=200,可修改。

25、FilePathField(path=None[, match=None, recursive=False, max_length=100, options])
他是⼀个CharField,⽤来选择⽂件系统下某个⽬录⾥⾯的某些⽂件,它有三个专有参数,只有path是必须的。

path是⼀个⽬录的绝对路径,match是⼀个正则表达式字符串,⽤来过滤⽂件名称;recursive为bool,指定是否包含path下的⼦⽬录。

注意,如果使⽤ MySQLdb 1.2.1p2 和 utf-8_bin 编码,会有⼀些问题。

具体问题未分析,可⾃⾏避开。

Field 选项
null
boolean 值,缺省设置为false。

通常不将其⽤于字符型字段上,⽐如CharField,TextField上。

字符型字段如果没有值会返回空字符串。

blank
boolean 值,该字段是否可以为空。

如果为假,则必须有值。

choices
元组值,⼀个⽤来选择值的2维元组。

第⼀个值是实际存储的值,第⼆个⽤来⽅便进⾏选择。

如SEX_CHOICES=((‘F’,’Female’),(‘M’,’Male’),)
db_column
string 值,指定当前列在数据库中的名字,不设置,将⾃动采⽤model字段名;
db_index
boolean 值,如果为True将为此字段创建索引;
default
给当前字段设定的缺省值,可以是⼀个具体值,也可以是⼀个可调⽤的对象,如果是可调⽤的对象将每次产⽣⼀个新的对象;
editable
boolean 值,如果为假,admin模式下将不能改写。

缺省为真;
error_messages
字典,设置默认的出错信息,可覆盖的key 有 null, blank, invalid, invalid_choice, 和 unique。

help_text
admin模式下帮助⽂档
form widget 内显⽰帮助⽂本。

primary_key
设置主键,如果没有设置django创建表时会⾃动加上:id = meta.AutoField(‘ID’, primary_key=True)
primary_key=True implies blank=False, null=False and unique=True. Only one primary key is allowed on an object.
radio_admin
⽤于 admin 模式下将 select 转换为 radio 显⽰。

只⽤于 ForeignKey 或者设置了choices
unique
boolean值,数据是否进⾏唯⼀性验证;
unique_for_date
字符串类型,值指向⼀个DateTimeField 或者⼀个 DateField的列名称。

⽇期唯⼀,如下例中系统将不允许title和pub_date两个都相同的数据重复出现
title = meta.CharField( maxlength=30, unique_for_date=’pub_date’ )
unique_for_month / unique_for_year
⽤法同上
verbose_name
string类型。

更⼈性化的列名。

validators
有效性检查。

⽆效则抛出 django.core.validators.ValidationError 异常。

相关文档
最新文档