美文网首页
django 模型-字段

django 模型-字段

作者: eeert2 | 来源:发表于2020-03-05 13:14 被阅读0次

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

一、字段通用选项:

  • null,当该字段为空时,Django 会将数据库中该字段设置为 NULL。默认为 False
    一般来说,我们应该避免使用NULL,而是尽量设置default默认值。
    如果字段类型是strCharFieldTextField等类型,我们也尽量不要设置null=True,这意味着对于“无数据”有两个可能的值:NULL和空字符串

  • blank, 如果设置为True,则字段允许为空。则设置是应用于Django AdminModelForm中的表单验证,如果我们做的是纯后端api,则不需要关注该字段。

  • choices 一个二元组序列,用作字段的选项

YEAR_IN_SCHOOL_CHOICES = [
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
    ('GR', 'Graduate'),
]

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

上述两种写法都可以,但是建议使用第二种。
每当 choices 的顺序变动时将会创建新的迁移,而列表是无序的,可能造成重复生成迁移文件。

每个二元组的第一个值会储存在数据库中,要获取该字段二元组中相对应的第二个值,使用 get_FOO_display()方法,FOO就是我们的字段名。

  • default 该字段的默认值。
  • primary_key 如果设置为 True ,将该字段设置为该模型的主键。默认为False,如果我们没有设置主键, Django 会自动添加一个 IntegerField字段id,并设置为主键
    如以下,则不会生成id字段。
from django.db import models

class UserInfo(models.Model):
    name = models.CharField(max_length=32, unique=True, primary_key=True)
    password = models.CharField(max_length=64, default='123456')
  • unique,如果为True,则在数据库中必须唯一
  • db_column 字段在数据库中的名称,如果不设置,则默认为字段名
  • db_index 如果为True,将为此字段创建数据库索引
  • verbose_name 字段备注名,在admin上显示
  • editable如果为False,则该字段将不会显示在django adminModelForm中。在模型验证期间也将跳过它们。默认值为True
  • error_messageserror_messages参数使您可以覆盖该字段将引发的默认消息。传递一个字典,其中包含与您要覆盖的错误消息相匹配的键。

二、常用字段

  • CharField : 字符串,可以传入python的str数据
    参数:max_length 字符串长度, 必须设置

  • BooleanField: 如果不设置null = True,则只能传入TrueFalse,如果null = True,则可以传入TrueFalse,效果和NullBooleanField相同,但是不建议使用NullBooleanField,因为在未来的Django版本中可能会不建议使用后者。

  • DateField : 日期,可以传入python中的datatime.date实例对象。
    参数 : auto_now 如果为True,则每次执行 obj.save()将会自动将字段设置为当前日期,一般用于"最后修改日期",默认为False
    auto_now_add如果为True,则首次创建对象时,将字段自动设置为当前日期,且无法进行修改,一般用于"创建日期"
    选项auto_now_addauto_nowdefault是互斥的,一旦auto_now_addauto_nowTrue,则不能再设置default

  • DateTimeField日期和时间,可以传入python中datetime.datetime实例对象。
    可选参数:auto_nowauto_now_addDateField用法相同。

  • DurationField 用来表示时间段,可以传入python的datetime.timedelta对象

  • EmailField,继承了CharField,在使用Form验证数据是否是邮箱格式

相关文章

  • Django模型层基本概念

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

  • 框架_Django_2

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

  • django 模型-字段

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

  • auth 应用

    User 模型 from django.contrib.auth.models import User 1. 字段...

  • [Django] 国家字段

    如果Django模型中,包含国家这个字段,那么非常推荐使用 django-countries 这个库。它的好处有:...

  • Django动态模型字段

    这几天准备写个工作流系统,因为工作流中一些模板的字段都是不固定的,于是思考有没有动态的模型字段,刚好找到了某个大神...

  • 五 Django模型字段

    一、概要 模型是你的数据的唯一的信息源。它包含你所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表...

  • python-django 模型model字段类型说明

    python-django 模型model字段类型说明[https://www.cnblogs.com/wt869...

  • Django术语

    参考官方中文链接:Django术语 1、具体的模型 一个非抽象 (abstract=False) 模型。 2、字段...

  • django:models常见类型

    1. django 模型models 常用字段 1、models.AutoField自增列 = int(11)如果...

网友评论

      本文标题:django 模型-字段

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