Я переопределил clean()
метод формы, и у меня был набор форм этой формы.Проблема в том, что метод clean()
не вызывается, я думаю, проверка не работает, и я не понимаю, почему.Вы можете мне помочь ?Возможно, я (наверняка) делаю что-то не так?
forms.py
class SetUpdateForm(forms.ModelForm):
class Meta:
model = Set
fields = [
'scoreTeam1',
'scoreTeam2',
'match',
]
def clean(self):
cleaned_data = super().clean()
scoreTeam1 = cleaned_data.get("scoreTeam1")
scoreTeam2 = cleaned_data.get("scoreTeam2")
sport = cleaned_data.get("match").phase.tournament.sport
if scoreTeam1 and scoreTeam2:
print("a")
if scoreTeam1 < sport.nbPointPerSet and scoreTeam2 < sport.nbPointPerSet or scoreTeam1 > sport.nbPointPerSet and scoreTeam2 > sport.nbPointPerSet:
raise forms.ValidationError("A set is played in" + str(sport.nbPointPerSet) + " points")
if scoreTeam1 == scoreTeam2:
raise forms.ValidationError("Scores can't be equal")
return cleaned_data
MatchSetFormset = forms.inlineformset_factory(Match, Set, form=SetUpdateForm, min_num=1, extra=0, can_delete=False)
Обычно метод должен вызываться каждый раз при проверке формы?Я не понимаю.
Редактировать:
forms.py
class SetUpdateForm(forms.ModelForm):
class Meta:
model = Set
fields = [
'scoreTeam1',
'scoreTeam2',
'match',
]
class MatchSetFormset(forms.inlineformset_factory(Match, Set, form=SetUpdateForm, min_num=1, extra=0, can_delete=False)):
def clean(self):
super(MatchSetFormset, self).clean()
for form in self.forms:
if not form.is_valid():
continue
scoreTeam1 = form.cleaned_data["scoreTeam1"]
scoreTeam2 = form.cleaned_data["scoreTeam2"]
if scoreTeam1 > form.cleaned_data["match"].phase.tournament.sport.nbPointPerSet:
raise forms.ValidationError("error")
Я пробовал, на самом деле это работает, но я непочему у меня ошибка?