models.ForeignKey()的一些相关参数说明

发布时间 2023-04-08 17:30:04作者: 含若飞

models.ForeignKey() 是 Django ORM 中的一个字段类型,用于定义关联关系。在使用 models.ForeignKey() 时,可以传入一些参数来控制关联行为。以下是一些常用的参数说明:

to:指定关联的目标模型类。

on_delete:指定当关联对象被删除时的行为。CASCADE或者SET_NULL

related_name:指定反向关联的名称。

to_field:指定关联的目标模型类中用于关联的字段名称。

db_index:如果为 True,则在目标模型的关联字段上创建索引。

null 和 blank:指定关联字段是否可以为空。

limit_choices_to:指定关联对象的过滤条件。

verbose_name 和 help_text:用于在 Django Admin 后台中显示字段名称和帮助文本。
以下是一些参数的详细说明:

to:指定关联的目标模型类。可以使用字符串表示模型类的路径,也可以直接使用模型类的引用。例如:to='myapp.MyModel' 或 to=MyModel。

on_delete:指定当关联对象被删除时的行为。可以设置以下几个选项:

CASCADE:级联删除,即删除关联对象时同时删除所有依赖它的对象。

PROTECT:保护模式,即阻止删除关联对象,抛出 ProtectedError 异常。

SET_NULL:将关联字段设置为 NULL。

SET_DEFAULT:将关联字段设置为默认值。

SET():将关联字段设置为指定的值,可以是一个字典、一个 QuerySet 或一个常量。

DO_NOTHING:什么也不做。

related_name:指定反向关联的名称,默认为 模型类名_set。例如:related_name='myfield',可以通过 myfield 属性来访问反向关联的对象。

to_field:指定关联的目标模型类中用于关联的字段名称。默认为主键字段。

db_index:如果为 True,则在目标模型的关联字段上创建索引。

null 和 blank:指定关联字段是否可以为空。如果 null=True,则数据库中该字段将允许 NULL 值。如果 blank=True,则表单中该字段可以为空。

limit_choices_to:指定关联对象的过滤条件。可以是一个字典、一个 QuerySet 或一个函数。例如:limit_choices_to={'is_active': True},表示只能关联到 is_active=True 的对象。

verbose_name 和 help_text:用于在 Django Admin 后台中显示字段名称和帮助文本。例如:verbose_name='作者',help_text='请输入作者名称'。