Django将外键限制为满足特定条件的记录

Posted

技术标签:

【中文标题】Django将外键限制为满足特定条件的记录【英文标题】:Django restrict foreignkey to records meeting a specific criteria 【发布时间】:2013-09-17 19:46:32 【问题描述】:

如果我有一个外键 AuthorBook 模型,我怎么能限制什么 Authors 是有效的外键。例如,如果 Author 包含 work_authored 字段,我只希望 Books 能够对将 work_authored 字段设置为“books”的作者进行外键(与其他值,如“articles”、“essays”、“播放')。

我的场景(和 TL;DR):我希望我的记录只能外键化布尔字段设置为 true 的其他记录。

我很确定这可以通过 Django 的object validation 来完成,但这并不限制 Django 管理员下拉列表中的值。

【问题讨论】:

【参考方案1】:

尝试使用limit_choices_to。您可以将其设置为

class Book(Model):
    author = ForeignKey(AuthorModel, 
               limit_choices_to =  'work_authered': 'books'
              )

【讨论】:

谢谢!我测试了,这也验证了 ForeignKey 符合条件。

以上是关于Django将外键限制为满足特定条件的记录的主要内容,如果未能解决你的问题,请参考以下文章

将外键放入表单

Django如何将外键传递给ModelForm字段

复杂的django查询,获取foreignkey_set不包含满足限制的对象的对象

限制 HTTP 的请求方法

Django:使用原始查询来限制 ModelForm 中的外键选择字段

Django 将页面限制为特定用户