Django模型字段通用属性
每一个字段都需要一系列属性,例如使用CharField 时必须给出max_length 属性值, 除了以上特殊字段属性外, Django 还为所有字段提供了一系列通用属性,这些属性都是可选属性。
null
默认值为True
, 此时保存模型时·, Django
会在数据库的对应字段中保存空。
对于文本型字段,尽可能不使用null
属性,因为当使用默认值null
时,数据库中就可能出现两种空数据: NULL
和空字符串,而Django
默认使用空字符串。
blank
默认值为False
,当设置Field.blank=True
时字段值允许为空。
注意与Field.null
属性不同的是, null
只是表示数据库值而blank
用于表单验证,当字段属性blank=True
时,表单,验证将允许字段值为空,但是当blank=False
时,表单字段将变成必填字段。
choices
属性值为一个可迭代对象,如列表或者元组,迭代对象的每个成员包括两个字符串。当字段设置了choices
属性时,字段在网页中将会以下拉列表的形式显示。
列表或元组的第一个值将作为字段值保存到数据库中,第二个值用于提高字段的可读性。
示例1:
1 | courses_list_choices1 = ( |
显示效果如下:
示例2:
1 | courses_list_choices2 = ( |
显示效果如下:
示例3:
1 | courses_list_choices2 = ( |
显示效果如下:
示例4:
1 | courses_list_choices4 = ( |
显示效果如下:
default
设置字段默认值。属性值可以是字符串也可以是方法。默认值不可以是可变对象,如列表。
help_text
HTML 元素的提示文本,在文本中可以使用HTML 标记。
示例:
1 | name = models.CharField(max_length=35, verbose_name='名称', help_text='姓名长度不能超过10', default='张三丰') |
效果如下:
primary_key
将字段设置为数据表主键。如果模型中任何字段都不包含primary_key= True
属性,Django
将会自动为模型添加一个IntegerField
字段作为主键。
主键永远是只读的,当修改一个模型对象的主键后,如果保存将会在数据库中创建一个新对象。
unique
当宇段的unique
属性设置为True
时,该字段的所有值在整张数据表中不能重复,每一行数据’都必须有唯一的字段值。
verbose_name
verbose_name
属性类似于字段的说明。
除了ForeignKey
、ManyToManyField
、OneToOneField
三种字段类型外,其他宇段类型都包含一个默认的verbose_name
属性,可以直接在字段属性列表的第一位输入文本作为verbose_name
属性值。如果没有给出verbose_name
属性, Django
会使用字段名作为verbose_name
值,如果字段名中包含下画线时\下面线会被转换为空格。ForeignKey
、ManyToManyField
、OneToOneField
三种字段类型要求第一个参数必须是模型类,因此必须使用verbose_name
关键字。
示例