尝试这样做:
更新:
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
这两个领域都很多,那么该怎么办呢?
Answers:
尝试
matches = [val for val in Store.attribute_answers.all() if val in WishList.attribute_answers.all()]
请注意末尾的括号WishList.attribute_answers.all()
。添加括号会调用该all
函数以返回可迭代对象。
如果包含括号,则表示“只要希望清单中的答案也给我,商店中的所有值都将给出答案”。如果没有括号,则您要从商店的答案中索取所有值,这些值也包含在all
函数中,这是没有意义的。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 %}
对于所有发现问题中的代码为TL; DR的人
代替 query_set.many_to_many
你应该使用
query_set.many_to_many.all()