以我的形式,我有这个
mychoices = User.objects.filter(category__name='city')
我收到此错误
User Object is not iterable
。我是django的新手
这是下一行
relevance = forms.MultipleChoiceField(choices=mychoices, widget=forms.CheckboxSelectMultiple())
如果我评论此行,那么我没有看到任何错误
编辑:
我发现错误,我不得不使用此
(choices=[ (o.id, str(o)) for o in User.objects.all()]) Then it works.
有谁知道以前方法中的问题是什么
答案 0 :(得分:2)
您只需要指定窗口小部件类,而不是调用构造函数:
relevance = forms.MultipleChoiceField(choices=mychoices, widget=forms.CheckboxSelectMultiple)
<强>更新强> 选择必须是2元组的可迭代。首先是将在POST请求参数中返回的值,在UI上显示第二个字符串表示。也许,做这样的事情是有道理的:
choices = User.objects.filter(category__name='city').values_list('id', 'first_name')
你会得到:
(1, 'Mark')
(2, 'Jack')
...
当用户选择选项并发布表单时,您将在参数中收到用户ID,这样您就可以通过它检索用户对象。