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 タプルで反復可能でなければなりません。1 つ目は POST リクエスト パラメータで返される値、2 つ目は UI に表示される文字列表現です。おそらく、次のようなことをするのは理にかなっています:

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

あなたは得るでしょう:

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

ユーザーがオプションを選択してフォームを投稿すると、パラメーターでユーザー ID を受け取るので、それによってユーザー オブジェクトを取得できます。

于 2012-10-16T09:26:59.907 に答える