2013-08-30 52 views
2

我創建了我的形式,像這樣,如何在django中渲染表單ModelChoicefield的屬性?

class PartialOrderItemform(forms.Form): 
     option = forms.ModelChoiceField(queryset = OptionalItems.objects.all(),widget= forms.RadioSelect()) 

     def __init__(self,item ,*args, **kwargs): 
      super(PartialOrderItemform, self).__init__(*args, **kwargs) 
      self.fields['option'].queryset = OptionalItem.objects.filter(item=item) 

views.py

def show_item(request,id): 
    .... 
    final_form = form.PartialOrderItemform(item=id) 
    .... 

以上所有的工作就好了,我的問題是呈現模板中,做一些這樣的事{% for option in form.option %} {{option}}作品好吧,爲什麼這不起作用{{ option.price }}

顯然有一些我不理解,因此我在這裏問,爲什麼我不能訪問該選項的屬性和什麼是正確的方式去了解它。

+0

做'option.queryset.price'工作? – alecxe

+0

@alecxe它不... –

回答

0

你不是真的應該遍歷這樣的表單域。只要這樣做:

{{ form.option }} 
+0

我知道這樣的作品,但如果我想能夠呈現選項屬性,那就是我想要學習如何實現並在問題中指出它 –

0

您是否嘗試過使用model_formset?不知道爲什麼你要使用常規窗體並初始化查詢集兩次,當你想根據過濾的模型查詢集創建窗體集時。事情是這樣的:

class PartialOrderItemformSet(BaseModelFormSet): 
    def __init__(self, item, *args, **kwargs): 
     super(PartialOrderItemformSet, self).__init__(*args, **kwargs) 
     self.queryset = OptionalItem.objects.filter(item=item) 

現在,在您的模板,你應該能夠訪問內部的基本模型一元的方法來與循環:

{{form.instance.price}}