2012-04-26 43 views
3

我有以下形式:Django的复选框形式ModelMultipleChoiceField标签为每个输入

from models import MyModel 

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

我在下面的模板反过来使用:

<form action="" method="post">                        
     {% for field in form %}                         
     {{ field }} 
     {% endfor %}                           
     {% csrf_token %}                          
     <input type="submit" value="Submit Selected" /> 
    </form>                              

这使得下面的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> 

正如您所看到的,该模板为每个复选框获取一些标签(来自模型,其中ha这两个字符串字段的值可以在那里看到)。

问题是,我怎样才能进入复选框的这个标签并定制它们?我试图使用这些模型的名字,但有一些调整。有没有简单的方法在django中实现这一点?

我试着使用field.label,但我得到的是整个ChoiceField“选定”的标签。这不是我想要的,我需要进入标签为每个生成的复选框...

回答

5

我想你想你的形式覆盖label_from_instance

模型的统一法会调用以生成用于字段选择的对象的字符串表示形式;提供自定义表示,ModelChoiceField子类和覆盖label_from_instance。这个方法将接收一个模型对象,并且应该返回一个适合表示它的字符串。例如:

def label_from_instance(self, obj): 
    #custom logic here... 
    return smart_unicode(obj) 
相关问题