Форма, в которой поле Boolean Field всегда должно быть истинным.Джанго - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь добавить ограничение, чтобы пользователь всегда устанавливал флажок на «True».Это выглядит так, но, к сожалению, это не работает должным образом.Любая помощь будет оценена.

models.py

class OrderingMassage(models.Model):
    website_rules = models.BooleanField(default=None, blank=True)

forms.py

class OrderingMassageForm(forms.ModelForm):
    class Meta:
        model = OrderingMassage
        fields = ('website_rules')

    def clean_website_rules(self):
        data = self.cleaned_data['website_rules']
        if data == None:
            raise forms.ValidationError("please accept the rules of the website")
        else:
            return data

1 Ответ

0 голосов
/ 21 февраля 2019

Если что-то всегда (должно быть) верно, тогда вам не следует использовать Model в первую очередь.Модель хранит данные.Но если все записи имеют одинаковое значение, то данных не так много.Если столбец всегда True, то для чего нужен этот столбец?

Вторая проблема, с которой вы столкнулись, заключается в том, что BooleanField [Django-doc] (то есть поле формы) выдаст False как "пустое значение". Поэтому, вероятно, Pythonic проверяет правдивость, например:

class OrderingMassageForm(<b>forms.Form</b>):
    website_rules = forms.BooleanField(label='I accept the rules of the website.')

    def clean_website_rules(self):
        data = self.cleaned_data['website_rules']
        if <b>not data</b>:
            raise forms.ValidationError("please accept the rules of the website")
        else:
            return data

Таким образом, вы делаете , а не необходимо вызвать .save() этой формы. Но .is_valid(..) проверит форму и, таким образом, может выдать ошибки.

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