【问题标题】:Django Form Input ValidationDjango 表单输入验证
【发布时间】:2017-01-25 16:07:14
【问题描述】:

我有一个如下定义的输入表单。

class ProfileForm(forms.ModelForm):
class Meta:
    model = Profile
    fields = ['first_name', 'last_name', 'language', 
    ]
    widgets = {
        'language': forms.RadioSelect,
    }

在我的models.py 中,我定义了以下内容:

first_name = models.CharField(max_length=250)
last_name = models.CharField(max_length=250)
LANGUAGE = (('AR', 'Arabic'), ('FR', 'French'), ('ES', 'Spanish'))
language = models.CharField(max_length=20, choices=LANGUAGE, blank=False, default=None)

first_name 和last_name 是必填字段,如果用户将这两个选项留空,则会提示警告消息。但是,我也希望 language 字段成为必填字段。为此,我设置了blank=False。如果您在没有选择language 选项的情况下提交表单是正确的,那么表单将无效。但是,它不会向用户发出警告。如何做到这一点?

【问题讨论】:

  • "为此,我设置了空白=False":这是任何字段的默认值,因此无需设置。也许删除default=None,并为您的ModelForm 使用initial 参数?
  • 是的,我试过了,但没有成功:(
  • 向用户显示的验证警告是您需要在模板 HTML 中实现的内容。你做到了吗?
  • 不,我没有这样做,对于 first_name,last_name 它会警告我必须做任何事情。我认为单选按钮选项也是可能的。

标签: python django forms


【解决方案1】:

根据documentation,如果设置blank=False,则不能使用default=None。

除非在字段上设置了空白=假以及默认值,否则将使用选择框呈现包含“---------”的标签。要覆盖此行为,请向包含 None 的选项添加一个元组;例如(无,“您的显示字符串”)。或者,您可以在有意义的情况下使用空字符串而不是 None - 例如在 CharField 上。

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多