2009-06-29 5 views
0

이 문제는 매우 이상하며 다른 사람이 나를 도울 수 있기를 바랍니다. 논증의 목적으로 Book 모델에 ForeignKey 관계가있는 작성자 모델이 있습니다. 저자를 표시 할 때 ChoiceField에서 해당 저자와 관련된 책만 표시하도록하고 싶습니다. 따라서 AuthorForm을 재정의합니다. () 메소드를 작성하고 필자 ID를 기반으로 책을 필터링하는 쿼리를 기반으로 선택 목록 (튜플)을 만듭니다. 튜플은 책 ID와 책 이름 (즉, (1, 'Moby Dick'))의 합성어입니다. 그런 다음 "선택 사항"이 ModelForm의 선택 속성에 지정됩니다.ModelForm에서의 이상한 동작 및 저장

서식이 서식 파일에서 렌더링 될 때 해당 작성자와 관련된 책만 나열된 ChoiceField가 올바르게 표시됩니다.

이것은 이상한 곳입니다.

양식을 저장하면 ValueError가 표시됩니다 ("u'1 ':"Author.book "이 Book 인스턴스 여야 함).이 오류는 FK 관계로 인해 발생합니다. 그러나 추가하면 코드에 "print"문을 쓰고 다른 변경을하지 않은 다음 레코드를 저장하면 작동합니다 ValueError가 마술처럼 사라집니다. 실수로 다른 변경을하지 않도록 여러 번 시도했습니다. ?.

가 가

사람이 여기에 무슨 일이 일어나고 있는지 알고 있나요, 당신이 잘못하고있는 것을 아주 확실하지

+0

당신이 무엇을 인쇄를? 코드를 보여줄 수 있습니까? –

답변

2

을 할 때마다 작동하지만 그것은 단지의 검색어 수정하는 것이 좋습니다 :

class ClientForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     self.affiliate = kwargs.pop('affiliate') 
     super(ClientForm, self).__init__(*args, **kwargs) 
     self.fields["referral"].queryset = Referral.objects.filter(affiliate = self.affiliate) 

    class Meta: 
     model = Client 

위는 바로 하나 개 내 프로젝트에서이며 전달 된 제휴에 관한 추천 객체 만 표시에 완벽하게 작동합니다 :

form = ClientForm(affiliate=request.affiliate) 
+0

또는 맞춤형 관리자를 제공하십시오. –

+0

굉장한 제안! 완벽하게 일했습니다. 고맙습니다! – Huuuze