2011-12-17 49 views
0

我有很多类别的对象。像关于多选字段

English 
etc 
French 

我试图将该类别显示到multiplechocieField。所以我使用下面的代码。但它只是显示最后一个对象。 French

这里是我的forms.py

class UserProfileForm(forms.Form): 
categories = Category.objects.all() 
for c in categories: 
    CHOICES = ((c.id,c.name),) 

answers = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=CHOICES) 

你能帮帮我吗?谢谢

更新:我尝试了Chewie解决方案。但现在我越来越 TemplateSyntaxError at /users/profile/ Caught ValueError while rendering: need more than 1 value to unpack

回答

1

您重新分配(不附加)在for循环的每次迭代新值CHOICES。它应该是这样的:

class UserProfileForm(forms.Form): 
categories = Category.objects.all() 
CHOICES = [] 
for c in categories: 
    CHOICES.append((c.id, c.name)) 

answers = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=CHOICES) 

不管怎样,也许你应该使用该字段的适当ForeignKey

但是,如果你发现自己的黑客选择是动态的,你 可能会更好过使用适当的数据库表与一个ForeignKey。 选择意味着静态数据不会有太大变化,如果有的话。

https://docs.djangoproject.com/en/1.3/ref/models/fields/#choices

+0

好,谢谢。但获得另一个错误。代码已更新。 – Kulbir 2011-12-17 12:00:07

+0

我的(我们)错误。我追加了元组的元组,而不是元组。已经修复它,你只需要删除一些括号。 – Chewie 2011-12-17 12:12:18

+0

它的工作。谢谢 – Kulbir 2011-12-17 12:15:11