【发布时间】:2017-10-31 09:12:49
【问题描述】:
我们有一个 django 应用程序,其中包含大量带有通用模板的表单,用于呈现所有表单字段。这是一个此类表单模板的示例。
{% for field in form %}
{% include "templates/_pratial/_field.html %}
{% endfor %}
_field.html
<div class="form-group">
{{ field }}
</div>
forms.py
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['myfield'].widget.attrs.update({'class' : 'form-control'})
现在我们正在用新的 html 更新我们的布局,我们的表单现在应该是这样的
<div class="form-group ">
<label class="control-label" for="email">
{{ field.label }}
</label>
<div class="input-group">
<div class="input-group-addon">
<i class="{{ field.?? }}"></i> //fa fa-envelope-o
</div>
{{ field }}
</div>
</div>
如何动态插入fa fa-envelope-o,而不破坏dry
类似的东西
self.fields['myfield'].icon = "fa fa-envelope-o"
在表单初始化中,可以很容易地在模板中使用,例如 {{ field.icon }}
【问题讨论】:
-
看来您需要使用自定义小部件。
-
也许您可以为此尝试自定义表单字段。 docs.djangoproject.com/en/1.11/ref/forms/fields/…
标签: django