Как построить чистый метод для formset? - PullRequest
0 голосов
/ 01 июня 2019

Мне интересно, как я могу проверить правильность набора форм. Позвольте мне объяснить мой случай. У меня есть пять форм, которые содержатся в форме. Каждая форма представляет собой набор волейбольного матча (волейбольный матч проводится в 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)
...