これをしようとしています:
wishList = WishList.objects.get(pk=20)
matches = [val for val in Store.attribute_answers.all() if val in wishList.attribute_answers]
そして、これを手に入れて...
'ManyRelatedManager' object is not iterable
どちらのフィールドも多対多なので、どうすればよいでしょうか?
これをしようとしています:
wishList = WishList.objects.get(pk=20)
matches = [val for val in Store.attribute_answers.all() if val in wishList.attribute_answers]
そして、これを手に入れて...
'ManyRelatedManager' object is not iterable
どちらのフィールドも多対多なので、どうすればよいでしょうか?
試す
matches = [val for val in Store.attribute_answers.all() if val in WishList.attribute_answers.all()]
の最後の括弧に注意してくださいWishList.attribute_answers.all()
。括弧を追加すると、all
関数が呼び出されて iterable が返されます。
括弧を含めると、「その値がウィッシュリストの回答にもある限り、店の回答のすべての値を教えてください」と言っています. 括弧がないと、関数にもあるストアの回答からすべての値を求めていますがall
、これは意味がありません。all 関数はイテラブルではありません (イテラブルを返す関数です)
あなたが何かを探しているように聞こえます
Store.attribute_answers.all()
テンプレートでこれを行う場合:
{% for room in study.room_choice.all %}
{{ room }}
{% empty %}
empty list!
{% endfor %}
アップデート
スルー テーブルがある場合は、そのテーブル内の要素にアクセスできます (詳しくはこちらを参照)。 (スルー テーブル名を小文字で使用し、接尾辞 _set を付けます):
{% for roominfo in participant.roomchoicethru_set.all %}
{{ roominfo.room}} {{ roominfo.telnumber}}
{% endfor %}