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

clj7thdc  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(188)

我有以下模型:

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

字符串
adviser不能是任何用户,而是满足某些要求的用户(例如,属于某个组的用户)。这与例如处理表单时相关:选择adviser的选项卡显示了系统中的所有用户,但我想过滤这些用户,只显示实际上是顾问的用户(在这种情况下,通过属于advisers组来定义)
有没有可能在模型级别处理这种约束?或者在填充表单中的选择框时?

axzmvihb

axzmvihb1#

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

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

字符串
对于更复杂的查询,可以使用Q对象:

..., limit_choices_to=Q(share_holder=True) | Q(distributor=True)

相关问题