django - 将 ForeignKey 的可能值限制为模型的子集

标签 django django-models django-forms

我有以下模型:

class SOA(models.Model):
    adviser = models.ForeignKey(User)
    ...
adviser不能是任何用户,而是满足某些要求的用户(例如,属于某个组的用户)。例如,在处理表单时,这是相关的:用于选择 adviser 的下拉列表。向我显示系统中的所有用户,但我想过滤它并且只显示实际上是顾问的用户(在这种情况下,定义为属于 advisers 组)

是否可以在模型级别处理这种约束?或者也许在填充表单中的选择框时?

最佳答案

您可以使用 limit_choices_to ForeignKey 的初始化参数类(class)。例如:

adviser = models.ForeignKey(User, limit_choices_to={'is_staff': True})

对于更复杂的查询,您可以使用 Q objects :
..., limit_choices_to=Q(share_holder=True) | Q(distributor=True)

关于django - 将 ForeignKey 的可能值限制为模型的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35291612/

相关文章:

Django request.POST 作为表单的参数

GAE : sqlite "ImportError: cannot import name utils" 上的 Django 1.4

django - 在 Django 中将表单拆分为选项卡

python - Django迁移数据库列顺序

django - 如何删除外键集?

python - forms.py 的问题

python - 如何通过继承避免 ModelForms 中的代码重复

django - 如何使 Django 的 DATETIME_FORMAT 处于事件状态?

python - 导入错误: cannot import name 'OSCAR_MAIN_TEMPLATE_DIR'

sql - 如何在 Django ORM 查询中包含来自外键对象的数据?