美文网首页
六 Django模型字段选项

六 Django模型字段选项

作者: 唯老 | 来源:发表于2019-02-20 22:17 被阅读11次

一、说明

所有的模型字段都可以接收一定数量的参数,比如CharField至少需要一个max_length参数。下面的这些参数是所有字段都可以使用的,并且是可选的。

二、数据库相关

1、null

  1. 说明

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

  2. 示例代码

    class User(models.Model):
        # 介绍
         text = models.CharField(max_length=255, null=True)
    

3、db_column

  1. 说明

    该参数用于定义当前字段在数据表内的列名。如果未指定,Django将使用字段名作为列名

  2. 示例代码

    class UserInfo(models.Model):
        # 自定义主键
        uid = models.AutoField('主键', primary_key=True)
        # 用户名
        username = models.CharField('用户名', db_column='name', max_length=64)
        password = models.CharField('密码', db_column='pwd', max_length=64)
    
  3. 示例图

    image image

5、db_index

  1. 说明

    该参数接收布尔值。如果为True,数据库将为该字段创建普通索引。

  2. 示例代码

    class UserInfo(models.Model):
        username = models.CharField(max_length=64, db_index=True)
    
  3. 示例图

    image

6、default

  1. 说明

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

  2. 注意

    在某种原因不明的情况下将default设置为None,可能会引发intergyerror:not null constraint failed,即非空约束失败异常,导致python manage.py migrate失败,此时可将None改为False或其它的值,只要不是None就行

7、unique

  1. 说明

    设为True时,数据库中字段建立唯一索引

  2. 注意:

    • 对于ManyToManyField和OneToOneField关系类型,该参数无效。
    • 当unique=True时,db_index参数无须设置,因为unqiue隐含了索引。
    • 自1.11版本后,unique参数可以用于FileField字段。
  3. 示例代码

    class UserInfo(models.Model):
        username = models.CharField('用户名', db_column='name', max_length=64, unique=True)
    
  4. 示例图

    image

三、 Admin后台相关

1、verbose_name

  1. 说明

    Admin中显示的字段名称。为字段设置一个人类可读,更加直观的别名。

    对于每一个字段类型,除了ForeignKeyManyToManyFieldOneToOneField这三个特殊的关系类型,其第一可选位置参数都是verbose_name。如果没指定这个参数,Django会利用字段的属性名自动创建它,并将下划线转换为空格。

  2. 示例代码

    class UserInfo(models.Model):
        # 自定义主键
        uid = models.AutoField('主键', primary_key=True)
        # 用户名
        username = models.CharField('用户名', max_length=64)
        password = models.CharField('密码', max_length=32)
    

2、choices

  1. 说明

    Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作

    用于页面上的选择框标签,需要先提供一个二维的二元元组,第一个元素表示存在数据库内真实的值,第二个表示页面上显示的具体内容。在浏览器页面上将显示第二个元素的值

  2. 示例代码

    class UserInfo(models.Model):
        SEX_CHOICES = (
            ('1', u'男'),
            ('2', u'女'),
        )
        sex = models.CharField(max_length=1, choices=SEX_CHOICES)
    

3、blank

  1. 说明

    Admin中是否允许用户输入为空

    True时,字段可以为空。默认False。和null参数不同的是,null是纯数据库层面的,而blank是验证相关的,它与表单验证是否允许输入框内为空有关,与数据库无关。所以要小心一个null为False,blank为True的字段接收到一个空值可能会出bug或异常。

  2. 示例代码

    class UserInfo(models.Model):
        # 自定义主键
        uid = models.AutoField('主键', primary_key=True)
        # 用户名
        username = models.CharField('用户名', max_length=64)
        password = models.CharField('密码', max_length=32)
    

4、editable

  1. 说明

    Admin中是否可以编辑

  2. 示例代码

       class UserInfo(models.Model):
           create_date = models.DateTimeField('注册时间', auto_now_add=True, editable=True)
    

5、help_text

  1. 说明

    Admin中该字段的提示信息

  2. 示例代码

     class UserInfo(models.Model):
         create_date = models.DateTimeField('注册时间', auto_now_add=True, editable=True,help_text='填写注册时间')
    

6、error_messages

  1. 说明

    自定义错误信息(字典类型),从而定制想要显示的错误信息

    字典健:null, blank, invalid, invalid_choice, unique等

  2. 示例代码

    {'null': "不能为空.", 'invalid': '格式错误'}
    

7、validators

  1. 说明

    自定义错误验证(列表类型),从而定制想要的验证规则

  2. 示例代码

    from django.core.validators import RegexValidator
    from django.core.validators import EmailValidator, URLValidator, DecimalValidator, MaxLengthValidator, MinLengthValidator, MaxValueValidator, MinValueValidator
    
        test = models.CharField(
            max_length=32,
            error_messages={
                'error1': '错误信息1',
                'error2': '错误信息2',
                'error3': '错误信息3',
            },
            validators=[
                RegexValidator(regex='\d+', message='错误了', code='error1'),
                RegexValidator(regex='\d+', message='又错误了', code='error2'),
                EmailValidator(message='又错误了', code='error3'), ]
        )
    

相关文章

  • 六 Django模型字段选项

    一、说明 所有的模型字段都可以接收一定数量的参数,比如CharField至少需要一个max_length参数。下面...

  • 处理模型中的选项字段

    处理模型中的选项字段 Django 中常常要用到选项字段 为了提高数据库效率和用户可读性,我们实际存储的是整数,显...

  • Django中提供的常用列表页选项

    Django提供了一些选项来控制列表页的显示字段、搜索字段、过滤器等等,这些选项在应用的admin.py文件的模型...

  • Django模型层基本概念

    所有Django模型继承类通过类属性定义模型字段,如:models...

  • Django模型之meta选项详解

    Django模型之meta选项详解 Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行...

  • Django 模型层 Meta 选项详解

    Meta 是 Django 模型类的一个内部类,用于定义一些与 Django 特定模型相关的一些选项。 可选的选项...

  • Django 2.1.7 视图 - 自定义404错误、500错误

    上一篇Django 2.1.7 模型管理器 models.Manager 以及 元选项 讲述了关于Django模型...

  • 框架_Django_2

    Django模型(MTV_Model) 什么是模型 配置数据 模型开发 模型属性 模型查询 字段查询 模型成员 模...

  • django 模型-字段

    在创建django的model时,字段有很多属性可以设置,一部分是所有字段的通用属性,一部分是每个字段独有的属性。...

  • django-model之元选项

    在模型类里面可以进行元选项设置.模型元数据是“任何不是字段的数据”元选项举例: 可用的元选项 abstract 如...

网友评论

      本文标题:六 Django模型字段选项

      本文链接:https://www.haomeiwen.com/subject/vygkyqtx.html