Мне интересно, как я могу проверить правильность набора форм.
Позвольте мне объяснить мой случай. У меня есть пять форм, которые содержатся в форме. Каждая форма представляет собой набор волейбольного матча (волейбольный матч проводится в 5 сетах).
Я хочу иметь возможность подать свой набор форм, если уже есть три формы, представляющие победу, потому что, если у меня есть, например, первые три набора, выигранные командой один, четвертый и пятый наборы бесполезны, матч закончено, когда есть три выигрышных сета.
Я не знаю, был ли я очень ясен ... Так что я хотел бы создать какое-то подтверждение, как этот. Если у меня будет метод или пример, который поможет мне, это будет хорошо.
Форма набора: MatchSetFormset
.
Вы найдете мой forms.py
внизу:
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")
if cleaned_data.get("match") is not None:
sport = cleaned_data.get("match").phase.tournament.sport
if scoreTeam1 and scoreTeam2:
if scoreTeam1 == scoreTeam2:
raise forms.ValidationError("Scores can't be equal")
if scoreTeam1 > sport.nbPointPerSet or scoreTeam2 > sport.nbPointPerSet or (scoreTeam1 < sport.nbPointPerSet and scoreTeam2 < sport.nbPointPerSet):
raise forms.ValidationError("A set is played in " + str(sport.nbPointPerSet) + "points.")
return cleaned_data
MatchSetFormset = forms.inlineformset_factory(Match, Set, form=SetUpdateForm, min_num=1, extra=0, can_delete=False)