2009-12-28 3 views
2
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의 고객에게 할당하는 것을 원하지 않습니다. 어떻게 이런 선택을 제한 할 것인가, 아니면 내가이 모든 잘못에 대해 처음부터 갈 것인가?장고 : 선택과 외래 키는 = Customer.objects.filter (계정 = self.account) 분명히

답변

1

계정 소유자는 django admin 인터페이스 또는 일반 사용자 정의보기를 사용하여 티켓을 지정합니까? 두 번째 경우 인 경우 ModelForm을 사용자 정의해야합니다.

1

ForeignKey.limit_choices_to입니다.

또 다른 옵션은 모델의 save() 메소드를 재정의하여 확인하는 것입니다 (관계가 너무 복잡하여 limit_choices_to가 허용하는 방법을 지정할 수없는 경우 필요하지 않습니다).