Django模型外键ForeignKey的参数及其解析
在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
作为查询名称。
评论已关闭