2012-04-26 84 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) 
相關問題