Django forms.DateInput 不应用 attrs 字段中给定的属性

新手上路,请多包涵

占位符,当尝试通过 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 许可协议

阅读 599
2 个回答

自从你没有发布你的表单代码,我最好的猜测是你明确地实例化了一个这样的表单字段通过发布大致如下所示的代码证实了我的猜测:

 class MyForm(forms.ModelForm):
    my_date_field = forms.DateField()

    class Meta:
        model = MyModel
        widgets = {
            'my_date_field': forms.DateInput(format=('%d-%m-%Y'),
                                             attrs={'class':'myDateClass',
                                            'placeholder':'Select a date'})
        }

我可以说它不起作用,因为如果您像这样显式实例化一个表单字段,Django 会假定您想要完全定义表单字段的行为;因此,您不能使用内部 Meta 类的 widgets 属性。

关于 覆盖默认字段类型或小部件 的部分末尾的注释指出:

声明定义的字段保持原样,因此忽略对元属性(如小部件、标签、帮助文本或错误消息)进行的任何自定义;这些仅适用于自动生成的字段。

原文由 Martin 发布,翻译遵循 CC BY-SA 3.0 许可协议

forms.DateField(widget=forms.DateInput(format=('%d-%m-%Y'),attrs={'class': 'datepicker', 'placeholder': 'Select a date', 'type': 'date'}))

当输入类型不改变时,这对我有用。

原文由 jamila 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进