0

在我的表格中我有这个

 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.

有谁知道以前的方法有什么问题

4

1 回答 1

2

您只需要指定小部件类,而不是调用构造函数:

relevance = forms.MultipleChoiceField(choices=mychoices, widget=forms.CheckboxSelectMultiple)

UPDATE 选择必须是 2 元组的可迭代。首先是 POST 请求参数中返回的值,其次是 UI 上显示的字符串表示形式。可能是,做这样的事情是有意义的:

choices = User.objects.filter(category__name='city').values_list('id', 'first_name')

你会得到:

(1, 'Mark')
(2, 'Jack')
...

当用户选择选项并发布表单时,您将在参数中收到用户 ID,因此您将能够通过它检索用户对象。

于 2012-10-16T09:26:59.907 回答