문제

이 문제는 매우 이상하고 누군가가 나를 도울 수 있기를 바라고 있습니다. 논쟁을 위해, 나는 책 모델과 외국인 관계를 가진 저자 모델이 있습니다. 저자를 표시하면 해당 저자와 관련된 책 만 표시하는 선택 필드를 갖고 싶습니다. 따라서 나는 authorform을 무시합니다.이니() 메소드와 나는 저자 ID를 기반으로 책을 필터링하는 쿼리를 기반으로 선택 목록 (튜플)을 만듭니다. 튜플은 책 ID와 책 이름 (예 : (1, 'Moby Dick')의 합성물입니다. 그런 다음 "선택"은 Modelform의 선택 속성에 할당됩니다.

양식이 템플릿에서 렌더링되면 ChoiceField가 올바르게 표시되며 해당 저자와 관련된 책만 나열합니다.

이것은 상황이 이상해지는 곳입니다.

양식을 저장하면 valueError를받을 수 있습니다 ( "u'1" ": author.book"은 책 인스턴스 여야합니다).이 오류는 FK 관계로 인해 의미가 있습니다. 그러나 "인쇄"를 추가하면 "인쇄"를 추가하면 코드에 대한 진술, 다른 변경을하지 않은 다음 레코드를 저장하고 작동합니다. ValueError가 마술처럼 사라집니다. 나는 이것을 여러 번 시도해 보았으며, 실수로 다른 변화를 일으키지 않았으며 매번 작동합니다.

여기서 무슨 일이 일어나고 있는지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

당신이 무엇을 잘못하고 있는지 잘 모르겠지만 쿼리 세트를 수정하는 것이 가장 좋습니다.

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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top