Django:ForeignKey with choices = Customer.objects.filter(account = self.account)

时间:2009-12-28 07:14:57

标签: django django-models one-to-many

class Ticket(models.Model):
    """
    An order placed by a customer.
    """
    account = models.ForeignKey(Account)
    client = models.ForeignKey(Client, choices=Client.objects.filter(account=self.account))

显然这不起作用,因为没有可用于“自我”的实例,但你可以看到我在这里尝试做什么。我有一个系统,您可以拥有帐户。您的帐户可以拥有客户,客户可以创建门票。我显然不希望帐户持有人A能够登录系统并创建票证并将其分配给帐户持有人B的客户。我如何限制这样的选择,或者我首先想要解决这个问题?

2 个答案:

答案 0 :(得分:1)

ForeignKey.limit_choices_to允许这样做。

另一种选择是覆盖模型的save()方法来检查它(如果关系太复杂,无法指定limit_choices_to允许的方式。我不认为你的情况会需要它。)

答案 1 :(得分:1)

您的帐户持有人是否使用django管理界面或您的普通自定义视图来分配票证? 如果是第二种情况,则应使用自定义ModelForm。