【问题标题】:Add comment count near the link Django在链接 Django 附近添加评论计数
【发布时间】:2013-12-01 12:54:09
【问题描述】:

我有一个工作博客。 每个帖子都有一个链接“评论”,该链接指向该特定帖子的 cmets。 我想添加评论计数,所以它看起来像:“评论(5)”等。

我在模板中添加了% get_comment_count for post.pk as comment_count %} 值,所以它看起来像这样:

    {% for post in posts.object_list %}
<div class="post">
    <div class="title">{{ post.title }}</div>
    <ul>
        <div class="time">{{ post.created }}</div>
        <div class="body tresc">{{ post.body }}</div>
        {% get_comment_count for post.pk as comment_count %}
        <div class="commentlink"><a href="post/{{ post.pk }}/">{{ comment_count }} Comments</a></div>

    </ul>
 </div>
{% endfor %}

但我得到了错误:

Invalid block tag: 'get_comment_count', expected 'empty' or 'endfor'

在包含{% get_comment_count for post.pk as comment_count %} 的行。 我做错了什么?

我的 models.py 看起来像这样:

from django.db import models
from django.contrib import admin

class Post(models.Model):
    title = models.CharField(max_length=60)
    body = models.TextField()
    created = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return self.title

class PostAdmin(admin.ModelAdmin):
    search_fields = ["title"]

class Comment(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    author = models.CharField(max_length=60)
    body = models.TextField()
    post = models.ForeignKey(Post)

    def __unicode__(self):
        return unicode("%s: %s" % (self.post, self.body[:60]))

class CommentAdmin(admin.ModelAdmin):
    display_fields = ["post", "author", "created"]

admin.site.register(Comment, CommentAdmin)
admin.site.register(Post, PostAdmin)

如何使用 db_table 来更改 Django 从中读取 cmets 的表? 我需要它从news_comment 表中读取。

【问题讨论】:

  • 您尝试在 django 模板中使用列表推导,而列表推导在模板中不起作用。
  • 这与列表推导无关,似乎标签不可导入(或与 for 循环冲突),您可以尝试在 for 循环之外调用 get_comment_count 吗?还要确保您的模板顶部有{% load comments %}
  • 好的,但我得到:“'int'对象没有属性'_meta'”。我是在循环寻找错误的东西还是?

标签: django post count comments blogs


【解决方案1】:

首先确保在模板顶部加载 cmets 模板标签:

{% load comments %}

get_comment_count 期望模型实例作为 for 关键字之后的参数。您正在向它传递一个整数主键值。所以你需要像这样更新它:

{% get_comment_count for post as comment_count %}

【讨论】:

  • 我收到“没有这样的表:django_cmets”错误。我在“新闻”应用程序中确实有一个表评论,所以当我在 Firefox 插件中打开 SQLite 管理器时,我看到:“news_comment”表包含许多字段,例如 id、body、post_id 等。如何将其与此表链接?
  • 确保INSTALLED_APPS 中有'django.contrib.comments',然后运行manage.py syncdb
  • 我忘了做 syncdb :) 还有一件事——我怎样才能告诉 Django 使用不同的表?我已将所有帖子添加到名为“news_comment”的帖子中,因此新帖子为空。我能做到吗?
  • 您可以在模型Meta 选项类上使用db_table 选项。请参阅docs。如果您想自定义 cmets 模型,请参阅此link
  • 请看我最初的帖子。我添加了我的 models.py 我应该把这段代码放在哪里以便 Django 从“news_comment”表而不是“django_cmets”中读取?
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2017-10-01
  • 1970-01-01
相关资源
最近更新 更多