django formset - не отправлять одну форму, если флажок не соответствует действительности? - PullRequest
0 голосов
/ 06 июля 2018

У меня есть набор форм, отображаемый в виде таблицы, и я не хочу проверять ни одну из форм, для которых не установлен флажок. Однако, когда форма отправлена, они проверяются.

Нужно ли обрабатывать это на уровне метода clean_field ()?

Если так, как мне остановить форму в этой точке, не делая весь набор форм недействительным ??

class HILISForm(forms.ModelForm):


    summary = forms.CharField(
                widget=forms.Textarea(attrs={'rows':3, 'cols':70}),
                label='',
                required=False)


    class Meta:
        model = Report
        fields = ('reported', 'summary', )

    def clean_reported(self):

        reported = self.cleaned_data['hilis']

        if reported:
            return(hilis_reported)
        else:
            raise(forms.ValidationError('Not checked...'))

если я «пропущу» вместо сообщения об ошибке, то эта форма все еще появится в моем cleaned_dict, который мне не нужен.

1 Ответ

0 голосов
/ 06 июля 2018

Я уверен, что есть гораздо более простой и чистый способ сделать это, но если вы застряли, вы можете сделать это, создав идентификатор для каждого поля ввода, а затем создав / сохранив объект с логикой в ​​представлении. вместо. Похоже, у вас есть много вещей, которые нужно проверить, и они не будут идеальными, но это один из способов сделать это.

У меня была хитрая схема проверки для одного из моих проектов, и мне было проще просто создать форму, а затем обработать ее в представлении поста. Вы все еще можете добавлять сообщения об ошибках в форму и делать все это из представления также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...