Django ManyToMany两个for循环

时间:2012-10-05 13:58:04

标签: django django-templates django-haystack

我有两个for循环,第一个(对于i in var)用于获取帖子,另一个用于获取该帖子的标签(Post模型中的ManyToManyField):

{% for i in var %}
    {% for j in i.tags.all %}
        {{ j.name }}
    {% endfor %}
{% endfor %}

为什么这不起作用?

编辑:

以下是变量包含的内容:

变种:

[<SearchResult: myapp.post (pk='1')>, <SearchResult: myapp.post (pk='2')>]

这里是{{i.tags}}:

<django.db.models.fields.related.ManyRelatedManager object at 0x1620dd0>

如果我尝试使用.all迭代它,则不返回任何内容。

编辑2:

这可能是问题 - var是来自SearchQuerySet(django haystack)的变量:

var = SearchQuerySet().all()

2 个答案:

答案 0 :(得分:1)

在模板内部,j类似于<SearchResult: myapp.post (pk='1')>,其中没有.tags属性。试试for j in i.object.tags.all.object引用实际的模型实例。

请注意,Django通常不会抱怨在模板渲染过程中尝试访问不存在的属性(此处为i.tags)。因此,渲染任何东西也可能意味着不正确的属性引用。

答案 1 :(得分:0)

通过将标记字段添加到haystack searchindex中来解决它。现在它输出标签列表。谢谢大家的帮助!