Django 模型外键,过滤?
Django model foreign key, filtering?
假设我有这样的模型:
class Assignment(models.Model):
name = [...]
is_attendable = models.BooleanField([...])
class AttendanceList(models.Model):
what_to_attend = models.ForeignKey(Assignment, on_delete=models.CASCADE)
who_attends_it = [...]
因此,如果我将 is_attendable 设置为 False,则它不应列在出席列表中。这就像过滤外键的查询...我该怎么做?
您可以使用 limit_choices_to=…
parameter [Django-doc]:
class AttendanceList(models.Model):
what_to_attend = models.ForeignKey(
Assignment,
on_delete=models.CASCADE,
<strong>limit_choices_to={'is_attendable': True}</strong>
)
这将自动为 ModelForm
和 ModelAdmin
以及序列化程序中的表单应用过滤。
然而,这只会在 创建 或 更新 和 AttendanceList
时进行过滤:如果稍后 Assignment
设置is_attendable
到 False
,那么已经引用 Assignment
的 AttendanceList
将 不 更新、删除或阻止更新.
假设我有这样的模型:
class Assignment(models.Model):
name = [...]
is_attendable = models.BooleanField([...])
class AttendanceList(models.Model):
what_to_attend = models.ForeignKey(Assignment, on_delete=models.CASCADE)
who_attends_it = [...]
因此,如果我将 is_attendable 设置为 False,则它不应列在出席列表中。这就像过滤外键的查询...我该怎么做?
您可以使用 limit_choices_to=…
parameter [Django-doc]:
class AttendanceList(models.Model):
what_to_attend = models.ForeignKey(
Assignment,
on_delete=models.CASCADE,
<strong>limit_choices_to={'is_attendable': True}</strong>
)
这将自动为 ModelForm
和 ModelAdmin
以及序列化程序中的表单应用过滤。
然而,这只会在 创建 或 更新 和 AttendanceList
时进行过滤:如果稍后 Assignment
设置is_attendable
到 False
,那么已经引用 Assignment
的 AttendanceList
将 不 更新、删除或阻止更新.