2

我一直在拉头发,不知道发生了什么。

在我看来,我可以这样做:

from django.contrib.comments import Comment

...
context['comments'] = Comment.objects.filter(object_pk = self.kwargs['pk'])

...

然后在我的模板中:

{% for comment in comments %}
{{ comment.comment }}
{% endfor %}

它完美地工作并显示每条评论......

但是,当我尝试使用 django 模板标签进行评论时,我得到一个空列表

{% load comments %}
{% get_comment_list for video as comments %}
{% for comment in comments %}
{{ comment.comment }}
{% endfor %}
{{ comment_list|length }}  // displays '0'

上面代码中的视频是模板上下文中的对象实例 - 我在模板的其他地方使用它并且它工作正常 - 即 {{ video.title }}, {{ video.id }}

此外 - 其他评论模板标签似乎工作正常:

{% render_comment_list video %}

显示我在comments/list.html 中找到的测试模板——这个模板只是打印出“hello world”。

知道这里发生了什么或如何调试它吗?

4

1 回答 1

0

只是一个猜测,但是,当你这样做时:

Comment.objects.filter(object_pk = self.kwargs['pk'])

在视图中,您没有content_type为希望获得的评论指定(视频),因此您正在检索 ID 为“pk”的任何对象的所有评论 - 也许这就是您在手动执行时看到评论的原因,但是当你把它留给模板标签时没有。也许评论没有附加到正确的ContentType- 你可以在 django admin 中检查

于 2012-01-28T11:40:01.567 回答