python - 如何覆盖 Django 中 ModelForm 的 'type' 属性?

标签 python django html django-widget

具体来说,我想以一种形式呈现日期小部件,但我希望它“成为”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

  1. 安装 django-html5 : pip install django-html5

  2. 在 forms.py 中,将 html5.forms.widgets 导入为 html5_widgets

  3. 设置 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/

相关文章:

python - 继续(是/否)?在 Python 中

python - numpy 浮点错误 : invalid value encountered in subtract - not reproducible?

django - 为什么要在模板中使用管理表单?

Django 查询集 - 包括 ManyToMany 中整个集合的对象

jquery - 使用 png 作为 svg 的后备时的大小问题

javascript - 如何检测一周中的某一天,然后用它来改变风格

java - 如果 py4j JVM 正在运行,在 python 中测试的最佳方法?

python - 为什么我的 Python 代码显示错误的结果?

python - 如何查找给定日期范围内创建的对象?

JavaScript:是否可以在 iFrame 的父级上进行 scrollspy?