每个输入的ModelMultipleChoiceField标签的django复选框形式

Jav*_* C. 6 django checkbox label django-templates

我有以下表格:

from models import MyModel

class MultProgresemosReferenciasForm(forms.Form):
    selected = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                    queryset=MyModel.objects.filter(active=True))                   
Run Code Online (Sandbox Code Playgroud)

我将在以下模板中使用:

  <form action="" method="post">                                                                                             
      {% for field in form %}                                                                                                
        {{ field }}
      {% endfor %}                                                                                                           
      {% csrf_token %}                                                                                                       
      <input type="submit" value="Submit Selected" />
  </form>                                                                                                                    
Run Code Online (Sandbox Code Playgroud)

其中呈现以下html:

  <form action="" method="post">
    <ul>
<li><label for="id_selected_1"><input type="checkbox" name="selected" value="9" id="id_selected_8" /> prog 1420000930 - pp 0.0078125</label></li>
<li><label for="id_selected_2"><input type="checkbox" name="selected" value="10" id="id_selected_9" /> prog 1420001041 - pp 0.00390625</label></li>
    </ul>
      <div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='csrf_token_hash_string...' /></div>
      <input type="submit" value="Submit Selected" />
  </form>
Run Code Online (Sandbox Code Playgroud)

如您所见,模板为每个复选框获取一些标签(来自模型,其中有两个字符串字段,其中包含您可以在其中看到的值).

问题是,我如何进入复选框的标签并自定义它们?我正在尝试使用这些相同型号的名称,但需要进行一些调整.在django有一个简单的方法来实现这个目标吗?

我试过使用field.label,但我得到的只是整个ChoiceField的'Selected'标签.这不是我想要的,我需要进入每个生成的复选框的标签...

Nix*_*Nix 6

我想你想覆盖你的表格 label_from_instance

将调用模型的unicode方法来生成对象的字符串表示,以便在字段的选择中使用; 提供自定义表示,子类ModelChoiceField和覆盖label_from_instance.此方法将接收模型对象,并应返回适合表示它的字符串.例如:

def label_from_instance(self, obj):
    #custom logic here...
    return smart_unicode(obj)
Run Code Online (Sandbox Code Playgroud)