2012-11-22 30 views
0

我有一個簡單的模型形式:的Django模型選擇

class ProductSelectionForm(ModelForm): 
    class Meta: 
     model = Product 

和模型:

class Product(models.Model): 
    name = models.CharField(max_length=155) 

    def __unicode__(self): 
     return self.name 

但是,如果我呈現使用{{ form.as_p }}標籤形式,它只是呈現形式一個文本輸入。我如何才能將表單呈現爲無線電選擇選項,其中name作爲選項標籤,pk作爲值?我曾嘗試使用widget但沒有喜悅。

任何幫助非常感謝。

回答

6

你不想要一個模型。它們用於創建和編輯模型實例。相反,您似乎想要的是一種選擇現有實例的表單:爲此,請使用帶有ModelChoiceField的常規表單:

class ProductSelectionForm(forms.Form): 
    choice = forms.ModelChoiceField(queryset=Product.objects.all(), 
            widget=forms.RadioSelect) 
+0

Ahh很對!一個額外的問題 - 我如何消除表單呈現時出現的空白選擇? –

+0

請參閱[文檔](https://docs.djangoproject.com/en/1.4/ref/forms/fields/#modelchoicefield) - 設置'empty_label = None'。 –

+0

太好了,謝謝。 –