【问题标题】:Django - hide "This field is required." for BooleanFieldDjango - 隐藏“此字段是必需的。”对于布尔字段
【发布时间】:2020-10-10 22:38:48
【问题描述】:

我只想显示一个复选框,用户必须单击以确认已收到通知:

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? 只需在 forms.py 中执行 required=False 或从 views.py 中删除 request.POST 不是解决方案,因为此字段是每个定义所必需的,并且“如果 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)

【问题讨论】:

  • 您能分享一下您的看法吗?
  • @WillemVanOnsem views.py sn-p 已添加,感谢您的快速回复:D
  • 我在这里找到了一些东西,但没有完全解决我的问题:stackoverflow.com/questions/8542839/…

标签: django forms templates


【解决方案1】:

找到了一个可以接受的解决方案,我就这么干了:

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

遗憾的是,这并没有完全隐藏信息,但至少可以接受 如果您只希望用户承认您网站/服务的某些条款。

【讨论】:

    【解决方案2】:

    对于 BooleanField 的必需项没有意义。 BooleanField 可以为真或假,html 表单中假的表示是一个空复选框,这很好:空。请参阅docs

    【讨论】:

    • 好吧,这可能是真的,但仍然没有解决问题,好像 form.is_valid(): 在这种情况下不验证
    • 这就是我发送的文档的重点,按照文档所述,您应该允许在 BooleanField 上使用 required=False 进行空输入。
    • 好的,但我仍然没有在这里得到好处。我应该如何处理必填但未强制用户确认的复​​选框?对我来说毫无意义:(
    • 复选框不能是必需的,它们本质上有 2 种状态,如果它是必填字段,则意味着它只有一种状态是正确的。为了让它有两种状态,假和真,你不应该让它成为必需的。如果您需要一个布尔字段,则人们无法继续下一步。
    • 在这种特定情况下,应强制使用复选框,因为他必须确认例如TOS左右。无论如何感谢您的评论:D
    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2019-04-13
    • 2021-04-10
    相关资源
    最近更新 更多