Django - скрыть «Это поле обязательно для заполнения». для BooleanField - PullRequest
0 голосов
/ 20 июня 2020

Я хочу отобразить только флажок, который пользователь должен щелкнуть, чтобы подтвердить, что уведомление было принято:

class CheckForm(forms.Form):
    confirmed = forms.BooleanField(required=True)

    def __init__(self, *args, **kwargs):
        super(CheckForm, self).__init__(*args, **kwargs)
        self.fields['confirmed'].label = 'I confirm that I have taken notice'

Проблема в том, что моя форма показывает следующую метку: "Это поле обязательный." на выходе шаблона. Это также имеет смысл, поскольку я называю эту форму так в моем views.py:

form = CheckForm(request.POST)

Есть ли обходной путь, чтобы скрыть только упомянутую метку в моем шаблоне и сохранить required = True? Простое выполнение required = False в forms.py или удаление request.POST из views.py не является решением, поскольку это поле является обязательным по определению, а «if form.is_valid ():» не проверяет, отсутствует ли request.POST

views.py

def check(request):
    form = CheckForm(request.POST)
    user = User.objects.get(user=request.session.get('user'))
    if request.method == 'POST':
        if form.is_valid():
            user.token_checked = True
            user.save()
            messages.success(request, 'Thanks for your check-up, you are now able to login again.')
            return redirect(reverse('login'))
        else:
            return render(request, 'check.html')
    else:
        if not user.token_checked:
            username = str(user)
            token = str(user.reset_token)
            args = {
                'token': token,
                'username': username,
                'form': form
            }
            return render(request, 'check.html', args)

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Нашел приемлемое решение, я просто делаю:

self.fields['reset_token'].error_messages = {'required': 'My custom message to display'}

Это, к сожалению, не полностью скрывает сообщение, но, по крайней мере, это приемлемо, если вы хотите, чтобы пользователь только подтвердил некоторые условия вашего сайта / сервис.

0 голосов
/ 20 июня 2020

Требуется для BooleanField не имеет смысла. BooleanField может иметь значение true или false, а представление false в формах html является пустым флажком, что хорошо: пусто. См. документы .

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