2014-02-26 42 views
8

我想通過顯示實例的幾個字段來訪問ModelChoiceField的實例,以在模板中以我想要的方式呈現它們。django ModelChoiceField:如何通過模板中的實例?

class MyForm(forms.Form): 
    mychoices = forms.ModelChoiceField(
     queryset=ObjectA.objects.all(), widget=forms.RadioSelect(), empty_label=None 
    ) 

這不起作用:

{% for choice in form.mychoices %} 
    {{ choice.pk}} 
{% endfor %} 

我也嘗試使用查詢集,但它不會呈現任何

{% for choice in form.mychoices.queryset %} 
    {{ choice.pk}} 
{% endfor %} 

任何想法? 感謝

回答

10
{% for choice in form.mychoices.field.queryset %} 
    {{ choice.pk }} 
{% endfor %} 

注意額外.field。第一次遇到它時有點奇怪,但它給了你想要的東西。您也可以訪問該對象的屬性choices,而不是直接訪問查詢集,但你需要訪問選擇的第一要素來獲得實例的PK,就像這樣:

{% for choice in form.mychoices.field.choices %} 
    {{ choice.0 }} 
{% endfor %} 
+1

感謝的作品。的確,使用field屬性有點奇怪,我認爲已經在場上了。 :) – Michael

+1

謝謝,男人!你已經救了我的一天! –

+1

@AlexKrzyżanowski絕對!感謝您讓我知道這對您有所幫助。 – orokusaki