2016-09-21 3 views
0

나는 다음과 같은 형식이 있습니다장고 양식 실패

# coding=utf-8 

class SelectTwoTeams(BootstrapForm): 

    def __init__(self, *args, **kwargs): 
     user = kwargs.pop('user', None) 
     self.currentSelectedTeam1 = kwargs.pop('currentSelectedTeam1', None) 
     self.currentSelectedTeam2 = kwargs.pop('currentSelectedTeam2', None) 
     self.currentfixturematchday = kwargs.pop('currentfixturematchday', None) 
     self.currentCampaignNo = kwargs.pop('currentCampaignNo', None) 
     super(SelectTwoTeams, self).__init__(*args, **kwargs) 

     cantSelectTeams = UserSelection.objects.select_related().filter(~Q(fixtureid__fixturematchday=self.currentfixturematchday),campaignno=self.currentCampaignNo) 

     if not cantSelectTeams: 
      queryset = StraightredTeam.objects.filter(currentteam = 1) 
     else: 
      queryset = StraightredTeam.objects.filter(currentteam = 1).exclude(teamid__in=cantSelectTeams.values_list('teamselectionid', flat=True)) 


     self.fields['team1'].queryset = queryset 
     self.fields['team2'].queryset = queryset 
     self.fields['team1'].initial = self.currentSelectedTeam1 
     self.fields['team2'].initial = self.currentSelectedTeam2 

    team1 = forms.ModelChoiceField(queryset=StraightredTeam.objects.none(), empty_label=None, 
           widget=forms.Select(attrs={"class":"select-format",'onchange': 'this.form.submit();'})) 
    team2 = forms.ModelChoiceField(queryset=StraightredTeam.objects.none(), empty_label=None, 
           widget=forms.Select(attrs={"class":"select-format",'onchange': 'this.form.submit();'})) 

    def clean(self): 
     cleaned_data = self.cleaned_data # individual field's clean methods have already been called 
     team1 = cleaned_data.get("team1") 
     team2 = cleaned_data.get("team2") 
     if team1 == team2: 
      raise forms.ValidationError("You picked the same team!") 

     return cleaned_data 

나는 나의 HTML 파일에 다음과 제대로 말한다 같은 두 팀을 선택 사용하는 경우 "당신은 같은 팀을 골랐다!"

<form action="" method="post"> 
     {% csrf_token %} 
     {{ form }} 
    </form> 
을 나는 다음과 같은 사용하는 경우

그러나 :

<form action="" method="post"> 
     {% csrf_token %} 
     {{ form.team1 }}{{ form.team2 }} 
    </form> 

나는 어떤 피드백을 얻을 수 없습니다. 같은 두 팀을 선택하면 아무 것도 발생하지 않습니다. 필드를 분리하는 것이 왜 작동을 멈추게하는지에 대한 아이디어는 없습니까?

감사합니다. Alan.

답변

1

두 필드의 차이는 "필드 분리"가 아닙니다. 양식 레이블, 레이아웃 및 가장 중요한 오류를 포함한 전체 양식 표현에서 두 입력 필드 만 표시하는 것으로 전환 한 것입니다.

물론 대부분의 경우에 당신이 제공하는 추가 레이아웃 컨트롤이 필요 하겠지만, 기본 버전 인 {{ form }}이 가지는 다른 모든 것들을 기억해야합니다.

{{ form.non_field_errors }} 
{{ form.team1.label_tag }}{{ form.team1 }}{{ form.team1.errors }} 
{{ form.team2.label_tag }}{{ form.team2 }}{{ form.team2.errors }} 
+0

완전한 의미를 갖습니다. 감사합니다. :) –