占位符,当尝试通过 django 的 attrs 说明符应用 forforms.DateInput 时未设置类
表单是 ModelForm 。
根据 文档
采用与 TextInput 相同的参数,还有一个可选参数:
这是代码:
widgets = {
'my_date_field': forms.DateInput(format=('%d-%m-%Y'),
attrs={'class':'myDateClass',
'placeholder':'Select a date'}
)
}
同样适用于 forms.TextInput
并且工作正常。
我在这里错过了什么?
任何人都想要完整的课程代码:
class trademark_form(ModelForm):
my_date_field = DateField(input_formats=['%d-%m-%Y'])
class Meta:
model = myModel
widgets = {
'my_date_field': forms.DateInput(format=('%d-%m-%Y'), attrs={'class':'myDateClass', 'placeholder':'Select a date'}),
'field1': forms.TextInput(attrs={'class':'textInputClass', 'placeholder':'Enter a Value..'}),
'field2': forms.TextInput(attrs={'class':'textInputClass', 'placeholder':'Enter a Value..', 'readonly':'readonly', 'value':10}),
'desc': forms.Textarea(attrs={'class':'textAreaInputClass', 'placeholder':'Enter desc', 'rows':5}),
}
exclude = ('my_valid_field')
为字段生成的 HTML, my_date_field
:
<input type="text" id="id_my_date_field" name="my_date_field">
为字段生成的 HTML, field1
:
<input type="text" name="field1" class="textInputClass" placeholder="Enter a Value.." id="id_field1">
原文由 ThinkingMonkey 发布,翻译遵循 CC BY-SA 4.0 许可协议
自从你没有发布你的表单代码,我最好的猜测是你明确地实例化了一个这样的表单字段通过发布大致如下所示的代码证实了我的猜测:
我可以说它不起作用,因为如果您像这样显式实例化一个表单字段,Django 会假定您想要完全定义表单字段的行为;因此,您不能使用内部
Meta
类的widgets
属性。关于 覆盖默认字段类型或小部件 的部分末尾的注释指出: