我们有一个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 ,而不会破坏干
有点像
self.fields['myfield'].icon = "fa fa-envelope-o"
在表单init中,可以很容易地在{{field.icon}}
等模板中使用答案 0 :(得分:1)
class MyNewCharField(forms.CharField):
def __init__(self, my_class=None, **kwargs):
super(MyNewCharField, self).__init__(**kwargs)
self.my_class_name = my_class_name
您可以继承要创建新字段的表单字段,并添加其他属性,例如&#39; my_class&#39;如上例所示,并在表单 init 本身初始化class_name。