首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ManyRelatedManager对象不可迭代

ManyRelatedManager对象不可迭代
EN

Stack Overflow用户
提问于 2013-02-17 19:48:34
回答 5查看 98.9K关注 0票数 113

尝试这样做:

代码语言:javascript
复制
wishList = WishList.objects.get(pk=20)
matches = [val for val in Store.attribute_answers.all() if val in wishList.attribute_answers]

还有这个..。

代码语言:javascript
复制
'ManyRelatedManager' object is not iterable

两个字段都是多对多的,如何才能做到这一点呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-17 20:17:15

试一试

代码语言:javascript
复制
matches = [val for val in Store.attribute_answers.all() if val in WishList.attribute_answers.all()]

请注意WishList.attribute_answers.all()末尾的括号。添加圆括号将调用all函数以返回一个迭代值。

如果包含括号,则表示“只要这些值也在愿望列表答案中,就给我商店答案中的所有值”。如果没有括号,您请求的是商店答案中的所有值,这些值也在all函数中,这是没有意义的。all函数不是可迭代的(它是一个返回可迭代的函数)

票数 128
EN

Stack Overflow用户

发布于 2013-02-17 20:16:29

听起来你要找的东西是

代码语言:javascript
复制
Store.attribute_answers.all()
票数 60
EN

Stack Overflow用户

发布于 2019-01-18 18:58:22

如果您在模板中执行此操作:

代码语言:javascript
复制
{% for room in study.room_choice.all %}
  {{ room }}
  {% empty %}
  empty list!
{% endfor %}

更新

如果您有一个直通表,您可以像这样访问该表中的元素(作为详细的here) (注意,您使用的是直通表名称,小写,后缀为_set):

代码语言:javascript
复制
{% for roominfo in participant.roomchoicethru_set.all %}
  {{ roominfo.room}} {{ roominfo.telnumber}}
{% endfor %}
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14920735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档