私は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を追加) した場合、この問題は発生しません。フィールドに表示する属性が必要な場合は、フォームのフィールドをオーバーライドして、 DRY原則に反するrequired=Trueを追加する必要があるため、これは問題です。何か不足していますか、それとも何らかのバグですか?
編集: フロッピーフォームを使用していることに言及しませんでした。それが関係しているかもしれません。この問題をさらに調査する必要があります。