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

时间:2016-02-09 12:03:42

标签: django django-models django-forms

我有以下型号:

class SOA(models.Model):
    adviser = models.ForeignKey(User)
    ...

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

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

1 个答案:

答案 0 :(得分:7)

您可以使用ForeignKey类的limit_choices_to init参数。例如:

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

对于更复杂的查询,您可以使用Q objects

..., limit_choices_to=Q(share_holder=True) | Q(distributor=True)
相关问题