我有以下型号:
class SOA(models.Model):
adviser = models.ForeignKey(User)
...
adviser
不能是任何用户,而是满足某些要求的用户(例如,属于某个组的用户)。这与处理表单时相关:选择adviser
的下拉列表向我显示系统中的所有用户,但我想过滤它并且仅显示实际顾问的用户(在这种情况下已定义) ,属于advisers
组)
是否可以在模型级别处理这种约束?或者也许填写表单中的选择框?
答案 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)