django模型形式字段模板干

时间:2017-10-31 09:12:50

标签: django

我们有一个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}}

等模板中使用

1 个答案:

答案 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。