Django模型外键ForeignKey的参数及其解析
warning:
这篇文章距离上次修改已过428天,其中的内容可能已经有所变动。
在Django中,一个模型可以有一个外键指向另一个模型。这个外键可以在被关联的模型中设置参数来定制其行为。以下是一些常用的参数及其解释:
on_delete:当关联的对象被删除时,定义外键行为的选项。常用的值有models.CASCADE,models.PROTECT,models.SET_NULL,models.SET_DEFAULT,models.SET,models.DO_NOTHING。related_name:反向查询时,使用的名称。如果没有设置,默认是模型名的小写后跟_set。related_query_name:当使用<model_name>__set的反向查询时,使用的名称。这是Django 2.0以上版本的新特性。limit_choices_to:在admin或者ModelForm中对可选项的限制。db_constraint:是否在数据库层面强制外键约束,默认为True。null:是否允许外键为空,默认为False。blank:是否在表单中允许用户不选择值,默认为False。default:如果未指定值,外键的默认值。
示例代码:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(
Author,
on_delete=models.SET_NULL,
null=True,
related_name='books',
related_query_name='book'
)在这个例子中,Book模型有一个外键指向Author模型。如果作者被删除,相关的书籍会自动将author_id设置为NULL。同时,可以通过books反向查询到所有书籍,而在查询中使用book作为查询名称。
评论已关闭