我如何自定义Django表单并为它们设置类?例如,我有一个带有引导类和自定义字体的文本框:
<input type="text" class="form-control myfont" value="{{ model1.field1 }}"/>
但原始表单字段“ {{form1.form_field1}} ”是一个没有样式的简单文本框。我尝试使用此代码:
<input type="text" class="form-control myfont" value="{{ form1.form_field1 }}"/>
此代码无效。你有什么建议吗?
答案 0 :(得分:2)
您可以使用表单的__init__
方法向窗口小部件添加额外的属性。如果你有很多这样的形式,那么你可以有一个超类形式:
class BootstrapForm(forms.Form):
def __init__(self, *args, **kwargs):
super(BootstrapForm, self).__init__(*args, **kwargs)
for field_name in self.fields:
field = self.fields.get(field_name)
if field:
field.widget.attrs.update({
'class': "form-control myfont"
})
然后让你的其他形式扩展这个。
答案 1 :(得分:2)
如果要注入阻力最小的额外属性,可以使用django-tweaks。
$ pip install django-widget-tweaks
然后将'widget_tweaks'添加到INSTALLED_APPS。
https://pypi.python.org/pypi/django-widget-tweaks
{% load widget_tweaks %}
{% render_field form1.form_field1 class="form-control myfont" %}