Django 字段通用属性

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:

YEAR_IN_SCHOOL_CHOICES = {
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
}

year_in_school = models.CharField(
    max_length = 2,
    choices=YEAR_IN_SCHOOL_CHOICES,
    default = 'Freshman',
)

显示效果如图所示。
Django 字段通用属性

示例2:

# www.coolcou.com
MEDIA_CHOICES = {
    ('Audio', (
            ('vinyl', 'Vinyl'),
            ('cd', 'CD'),
    )),
    ('Video', (
            ('vhs', 'VHS Tape'),
            ('dvd', 'DVD'),
    )),
    ('unknown', 'Unknown'),
}

group_choice_field = models.CharField(
    max_length=2,
    choices=MEDIA_CHOICES,
    default='Audio',
)

显示效果如图所示。
Django 字段通用属性

示例3:
修改示例2,设置字段blank属性为True:

group_choice_field = models.CharField(
    max_length=2,
    choices=MEDIA_CHOICES,
    default='Audio',
    blank=True,
)

显示效果如图所示。
Django 字段通用属性

示例4:
修改示例2,在元素MEDIA_CHOICES中添加成员(None, ‘Please Select Media’):

MEDIA_CHOICES = {
    (None, 'Please Select Media'),
    ('Audio', (
            ('vinyl', 'Vinyl'),
            ('cd', 'CD'),
    )),
    ('Video', (
            ('vhs', 'VHS Tape'),
            ('dvd', 'DVD'),
    )),
    ('unknown', 'Unknown'),
}

显示效果如图所示。
Django 字段通用属性

default

设置字段默认值。属性值可以是字符串也可以是方法。默认值不可以是可变对象,如列表。

help_text

HTML元素的提示文本,在文本中可以使用HTML标记。
示例:

help_text = "Please select your <em>favorite</em> media"

显示效果如图所示。
Django 字段通用属性

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关键字。
示例:

date_field = models.DateField('This is publish day', default=datetime.datetime.now())
    key = models.ForeignKey(Question, verbose_name='Foreign key')

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!