2012-11-22 28 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

太好了,谢谢。 –