ManyRelatedManager オブジェクトは反復可能ではありません 質問する

ManyRelatedManager オブジェクトは反復可能ではありません 質問する

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

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

どちらのフィールドも多対多なので、これをどのように実行すればよいでしょうか?

ベストアンサー1

試す

matches = [val for val in Store.attribute_answers.all() if val in WishList.attribute_answers.all()]

の末尾の括弧に注意してくださいWishList.attribute_answers.all()。括弧を追加するとall、反復可能オブジェクトを返す関数が呼び出されます。

括弧を含めると、「ウィッシュ リストの回答にもその値が含まれている限り、ストアの回答のすべての値を返す」と言っていることになります。括弧がない場合、関数にも含まれているストアの回答のすべての値を要求することになりますがall、これは意味がありません。all 関数は反復可能ではありません (反復可能を返す関数です)

おすすめ記事