首页 文章

在自定义模板中使用Django表单字段呈现必需和错误类

提问于
浏览
4

我需要将模板中的字段作为标记吐出的一部分呈现必需和错误属性 . 我知道这可以通过在自动生成布局时使用form.as_p等来完成 .

但是,我对表单有一个复杂的2列布局 . 是否可以包含 required_css_class = 'required' ,它是表单类的一部分,同时为各个字段吐出html?

我需要这样做,因为我想从生成的html驱动jquery验证,而无需额外的工作 .

谢谢

1 回答

  • 7

    required_css_class 似乎正在被 forms.BoundField.css_classesforms.BaseForm._html_output 使用,仅适用于 as_pas_table 等 .

    它不是常规窗口小部件呈现的一部分 .

    你可以使用相同的 css_classes 方法返回你的元素的类,所以我认为最简单的解决方案是用一个元素包装 <input> 并给它类 {{ field.css_classes }} ,并修改你的验证选择器 .


    或者,这是一种将错误类入侵到错误字段的方法:

    def __init__(self, *args, **kwargs):
            super(form, self).__init__(*args, **kwargs)
            for field in self.errors:
                if not field == '__all__': 
                    # errors dict can have key __all__ for non field errors.
                    self.fields[field].widget.attrs['class'] = \
                        self.fields[field].widget.attrs.get('class', '') + 'error'
    

    要使用 required_css_class ,您必须使用 BoundField.css_classes 方法,这将涉及黑客入侵基础表单 __getitem____iter__ ,因为BoundField是按需构建的 . 上述方法更容易 .

相关问题