我需要通过模板中的字段将必需和错误属性作为标记吐出的一部分进行渲染。我知道这可以通过在自动生成布局时使用form.as_p等来完成。
但是我对表单有一个复杂的2列布局。是否可以包含 required_css_class ='required',这是表单类的一部分,同时为各个字段吐出html?
我需要这样做,因为我想从生成的html中驱动jquery验证而不需要额外的工作。
由于
答案 0 :(得分:7)
required_css_class
和forms.BoundField.css_classes
似乎正在使用forms.BaseForm._html_output
,仅适用于as_p
,as_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是按需构建的。上述方法更容易。