Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“Django”;。widget.attrs.update";无效_Django_Django Forms_Django 3.1 - Fatal编程技术网

“Django”;。widget.attrs.update";无效

“Django”;。widget.attrs.update";无效,django,django-forms,django-3.1,Django,Django Forms,Django 3.1,我有一个带有以下init方法的ModelForm: def __init__(self, *args, **kwargs): super(FragebogenForm, self).__init__(*args, **kwargs) self.fields['birth_date'].widget.attrs.update({'type': 'date'}) 这不会更改输入标记的type属性,尽管它应该更改(ctrl+f->“或者如果字段没有直接在表单上声明”)。如果我将其更改

我有一个带有以下init方法的ModelForm:

def __init__(self, *args, **kwargs):
    super(FragebogenForm, self).__init__(*args, **kwargs)
    self.fields['birth_date'].widget.attrs.update({'type': 'date'})

这不会更改输入标记的type属性,尽管它应该更改(ctrl+f->“或者如果字段没有直接在表单上声明”)。如果我将其更改为例如
.widget.attrs.update({'placeholder':'12.12.1999'})
它可以工作,新的占位符将显示在页面上。仅将类型设置为“最新”不起作用,但原因是?

小部件的类型由
属性决定。输入\u type
属性决定,因此:

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.fields['birth_date'].widget.input_type = 'date'

但是如果小部件不是
DateInput
,那么模型中的
birth\u date
字段很可能不是
models.DateField
,因此最好解决这个问题,而不是在小部件级别解决它。

您的模板是什么样的。它只是引用了
{{form}}
还是您单独引用了字段?您的第一块代码也是我在一段时间后想到的(仍然不知道为什么您可以通过
attrs.update
编辑除类型之外的所有其他HTML标记属性)。在构造函数中编辑字段不是很常见吗?我不知道表单字段的widget属性还有其他规则。
class MyForm(forms.ModelForm):
    
    class Meta:
        model = Meta
        widgets = {
            'birth_date': forms.DateInput()
        }