动态自定义 django 表单小部件
Posted
技术标签:
【中文标题】动态自定义 django 表单小部件【英文标题】:Dynamically customize django form widgets 【发布时间】:2011-06-12 06:02:12 【问题描述】:如果字段无效,我特别想添加一个error
类。所以它会像这样呈现:
<input type="text" name="email" class="error" />
这个例子看起来很老套,我还没有看到任何其他的例子来说明如何做到这一点。
http://jj.isgeek.net/2010/10/27/add-error-class-to-widgets-with-errors-in-django-forms/
是否可以全局覆盖默认小部件模板?如果该字段是必需的,我希望拥有像 required (或 html5 required attr)这样的类,以便可以首先使用 javascript 对其进行验证。例如,随着新的 html5 输入类型的出现,我希望能够将 type="number"
用于整数字段。
我已经阅读了这些文档,但并没有太大帮助。 http://docs.djangoproject.com/en/dev/ref/forms/widgets/#customizing-widget-instances
编辑
显然有一个required_css_class
和error_css_class
用于表单。但是,我正在使用 modelForms,这似乎不起作用。
【问题讨论】:
【参考方案1】:不幸的是,除了您已经使用标准 django 识别的 hack 之外,没有简单的方法。
是否可以全局覆盖默认小部件模板?
django 开发人员正在讨论如何解决这个问题。
目前,最吸引您的解决方案应该是使用 django 核心开发人员 Carl 的外部包:django-form-utils,它允许您覆盖模板、包含任意类和包含字段集。
并且,在您的 forms.py
中包含以下内容
from form_utils.forms import BetterModelForm as ModelForm
【讨论】:
form_utils 看起来是个不错的替代品,感谢您的提示。以上是关于动态自定义 django 表单小部件的主要内容,如果未能解决你的问题,请参考以下文章
使用 RadioSelect 小部件自定义 Django 表单
自定义 django 小部件 - decompress() arg 未填充