1. ホーム
  2. django

[解決済み] ManyRelatedManagerオブジェクトはイテラブルではない

2022-09-14 12:57:16

質問

これを実行しようとしています。

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 関数を呼び出してイテラブルを返します。

括弧を含む場合、あなたは "店舗の回答にあるすべての値を、その値がウィッシュリストの回答にもある限り、教えてください" と言っています。括弧がない場合は、店舗の回答から、ウィッシュリストの回答にもあるすべての値を要求しています。 all 関数にもある、ストアの回答からすべての値を求めることになり、これは無意味です。all 関数は反復可能ではありません (反復可能を返す関数です)。