说说 Python Django 模型中的字段

Django 模型中最重要且唯一必要的就是数据库模型字段定义。字段定义在类属性中,字段取名应避免使用与模型 API 发生冲突的名称, 比如 cleansave, or delete 等.

模型中每一个字段都是某个 Field 类的实例,比如 CharField、DateField 或 IntegerField 等等。这些字段类可实现以下功能:

  1. Field 类的实例类型用以指定对应的数据库数据类型(如:INTEGER, VARCHAR, TEXT)。
  2. 在渲染表单字段时默认使用的 HTML 视图展示方式 (如: 输入框、下拉框)。
  3. 基本表单有效性验证功能,用于 Django 后台和自动生成的表单。

1 通用字段参数

每一种字段实例都需要指定一些特定的参数。 例如, CharField (以及它的子类)需要接收一个 max_length 参数,用以指定数据库所存储 VARCHAR 数据长度。除了特定参数之外,还有一些通用可选参数。

参数 默认值 说明
null False 如果为 True,当该字段为空时,会将数据库中该字段设置为 NULL。
blank False 如果为 True,则该字段允许为空。之前的 null 参数仅仅是数据库层面的设置,而 blank 参数涉及表单验证。如果为 False,当进行表单验证时,该字段值不允许为空。
default - 字段的默认值,可以是一个值或者一个对象,如果是对象,每次实例化该模型时都会调用该对象。
help_text - 帮助说明,会随表单控件一同显示,也可用于生成文档。
unique False 如果为 True,表示这个字段的值在整个表中保持唯一。

除了以上这些参数之外,还有一些通用参数需要特别说明。

2 choices 参数

字段可设置choices 参数,它是一个二元组。设置之后,默认表单组件就会变为一个选择框,可选项为二元组中的第二个值。

我们在 models.py 中,创建了一个新闻类(New):

class New(models.Model):
    NEW_TYPE = (
        ('1', '体育'),
        ('2', '科技'),
        ('3', '汽车'),
    )
    title = models.CharField(max_length=60)
    type = models.CharField(max_length=1, choices=NEW_TYPE)

使用 makemigrations 指令(python manage.py makemigrations [app]),初始化迁移模型。
使用 migrate 指令(python manage.py migrate),新建好数据库模型。

使用 shell 指令(python manage.py shell),进入交互式命令行,并输入以下语句:

3 primary_key 参数

如果为 True ,会将该字段设为该模型的主键。 在一个模型中,如果没有字段的 primary_key 被设置为 True , Django 会自动添加一个 IntegerField 类型的字段,并将其设置为主键。

注意: 因为主键字段是只读的,如果我们修改并保存了一个模型实例的主键,这等同于创建了一个新的模型实例。例如:

class Book(models.Model):
    name=models.CharField(max_length=50,primary_key=True)

shell 输出结果:

实际上,Django 会给未定义主键的模型,新建一个主键:

 id = models.AutoField(primary_key=True)

我们也可以利用 AutoField 来自定义模型主键。

发布了613 篇原创文章 · 获赞 688 · 访问量 90万+

猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/104086354