具体来说,我想以一种形式呈现日期小部件,但我希望它“成为”HTML5(这样我就可以忘记 javascript 或其他任何东西,并信任 Chrome、Opera 和 Safari 来显示日期选择器)。
请不要使用 javascript 解决方案,我已经在网上找到了。
这是我的代码片段,但它仍然将表单字段 thedate 的类型属性作为“文本”。
#models.py
class MyModel(models.Model):
user = models.ForeignKey(User)
thedate = models.DateField()
#forms.py
class MyModelForm(ModelForm):
class Meta:
model = MyModel
widgets = {
'thedate': TextInput(attrs={'type': 'date'}),
}
任何人都可以开灯吗?
提前致谢。
最佳答案
使用 django-html5
安装 django-html5 :
pip install django-html5
在 forms.py 中,
将 html5.forms.widgets 导入为 html5_widgets
设置
widgets['thedate'] = html5_widgets.DateInput
我没有亲自测试它,因为我只是发现了诀窍,但多亏了你,我可能会使用它:D
只需覆盖 input_type
您也可以制作自己的小部件,思路如下:
from django import forms
class Html5DateInput(forms.DateInput):
input_type = 'date'
有关详细信息,请参阅 django/forms/widgets.py
;)
关于python - 如何覆盖 Django 中 ModelForm 的 'type' 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13094320/