django官方文档详解
  • 编写属于自己的第一个网站
  • 模型与字段类型
  • 关系类型数据字段
  • 模型参数统计说明
模型参数统计说明
Web开发 . 2019/12/09发布 . shanyonggang_web . 我要评论 . 313阅读

本节主要介绍字段模型中的常用参数,具体如下:

null参数

如果为True,则Django将NULL在数据库中存储空值。默认值为False。对于保存字符串类型数据的字段,请尽量避免将此参数设为True,那样会导致两种‘没有数据’的情况,一种是NULL,另一种是‘空字符串’。

blank参数

如果为True,则该字段允许为空白。默认值为Falsenull与数据库完全相关,而blank与验证相关。如果字段包含blank=True,则表单验证将允许输入一个空值。如果字段包含blank=False,则将需要该字段。

choices参数

设定一个二维的二元元组,其中第一个元素表示存在数据库中的值,第二个表示页面上显示的具体内容。在浏览器页面上将显示第二个元素的值。例如:

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

通常,最好在模型类中定义选择,并为每个值定义一个适当命名的常量

from django.db import models

class Student(models.Model):
    FRESHMAN = 'FR'
    SOPHOMORE = 'SO'
    JUNIOR = 'JR'
    SENIOR = 'SR'
    YEAR_IN_SCHOOL_CHOICES = (
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
    )
    year_in_school = models.CharField(
        max_length=2,
        choices=YEAR_IN_SCHOOL_CHOICES,
        default=FRESHMAN,
    )

    def is_upperclass(self):
        return self.year_in_school in (self.JUNIOR, self.SENIOR)

要获取一个choices的第二元素的值,可以使用get_FOO_display()方法,其中的FOO用字段名代替。

db_column参数

用于此字段的数据库列的名称。如果未指定,Django将使用该字段的名称。

db_index参数

如果为True,将为此字段创建数据库索引。此参数后续用的较多,用于为字段添加索引,便于快速查找数据。

db_tablespace

用于字段索引的数据库表空间的名字,前提是当前字段设置了索引。默认值为工程的DEFAULT_INDEX_TABLESPACE设置。如果使用的数据库不支持表空间,该参数会被忽略。

default参数

字段的默认值,可以是值或者一个可调用对象。如果是可调用对象,那么每次创建新对象时都会调用。设置的默认值不能是一个可变对象,比如列表、集合等等。lambda匿名函数也不可用于default的调用对象,因为匿名函数不能被migrations序列化。

editable参数

如果设为False,那么当前字段将不会在admin后台或者其它的ModelForm表单中显示,同时还会被模型验证功能跳过。参数默认值为True。

error_messages

用于自定义错误信息。参数接收字典类型的值。字典的键可以是null、 blank、 invalid、 invalid_choice、 uniqueunique_for_date其中的一个

help_text

额外显示在表单部件上的帮助文本。使用时请注意转义为纯文本,防止脚本攻击。

primary_key

如果你没有给模型的任何字段设置这个参数为True,Django将自动创建一个AutoField自增字段,名为‘id’,并设置为主键。也就是id = models.AutoField(primary_key=True)。如果你为某个字段设置了primary_key=True,则当前字段变为主键,并关闭Django自动生成id主键的功能。

unique

设为True时,在整个数据表内该字段的数据不可重复。当unique=True时,db_index参数无须设置,因为unqiue隐含了索引。

unique_for_date

日期唯一。可能不太好理解。举个栗子,如果你有一个名叫title的字段,并设置了参数unique_for_date="pub_date",那么Django将不允许有两个模型对象具备同样的title和pub_date。有点类似联合约束。

unique_for_month、unique_for_year类似

verbose_name

该字段的易读名称。如果未提供详细名称,则Django将使用字段的属性名称自动创建,将下划线转换为空格。

validators

运行在该字段上的验证器的列表。

总结

常用的参数如下:null、blank、verbose_name、db_index、choices


  • 有疑问请在下方评论区留言,我会尽快回复。
  • Email私信我: 511248513@qq.com 或添加博主 微信

前一篇:关系类型数据字段

后一篇:已经是最后一篇文章了!

本文作者:shanyonggang_web
发布时间:2019年12月9日 20:54
许可协议: 署名-非商业性使用 4.0 国际许可协议
知识共享许可协议     转载请保留原文链接及作者
正在加载今日诗词....
您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的


登录 后回复

当前暂无评论,点击登录来做第一个吃螃蟹的人吧!