我是 django 的新手,我认为到目前为止它很棒。我今天遇到了这个奇怪的问题:我有这个 FormModel:
class RegisterForm2(UserCreationForm):
mobile2 = forms.CharField(
label=_('Mobile Confirmation'),
max_length=50,
required=True,
widget = forms.TextInput(attrs = {'class':'nocopy'})
)
class Meta:
model = User
fields = ['username', 'mobile', 'mobile2', 'guardian_mobile']
labels = {
'username': _('Government ID'),
}
widgets = {
# workaround since __init__ setting to required doesnt work
'mobile': forms.TextInput(attrs = {'required':''}),
}
def __init__(self, *args, **kwargs):
super(RegisterForm2, self).__init__(*args, **kwargs)
self.fields['mobile'].required = True
现在移动字段在模型中有blank=True但我希望它只在表单中是必需的,所以我在__init__中做到了。现在它使该字段成为必填字段,但并未将required=""添加到文本输入中。现在,如果我像执行 mobile2字段一样覆盖了该字段(并添加了required=True ),我就不会有这个问题。这是一个问题,因为如果我希望在字段上显示所需的属性,我必须覆盖表单中的字段以添加required=True,这将违反DRY原则。我错过了什么还是这是某种错误?
编辑: 我没有提到我正在使用软盘表格。可能与此有关。我必须进一步调查这个问题。