2013-12-01 4 views
1

У меня есть рабочий блог. В каждом посте есть ссылка «Комментарии», которая приводит к комментариям к этому сообщению. Я хочу добавить комментарий, чтобы он выглядел так: «Комментарии (5)« ect.Добавить комментарий близко к ссылке Django

Я добавил % 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 изменить таблицу Джанго читает комментарии от? Мне нужно это для чтения из таблицы news_comment.

+0

Вы пытаетесь использовать понимание списка в шаблонах django, а список шаблонов не работает в шаблонах. –

+0

Итак, как я могу это сделать? – Fengson

+0

Это не имеет никакого отношения к пониманию списков, кажется, что тег не импортируется (или конфликтует с циклом for), можете ли вы попробовать вызвать 'get_comment_count' вне цикла for? Также убедитесь, что у вас есть '{% load comments%}' в верхней части шаблона. – jbub

ответ

0

Сначала убедитесь, что вы загружаете теги комментарии шаблона в верхней части шаблона:

{% load comments %} 

get_comment_count ожидает модели экземпляра в качестве параметра после for ключевого слова. Вы передаете ему целочисленное значение первичного ключа. Поэтому вам необходимо обновить его следующим образом:

{% get_comment_count for post as comment_count %} 
+0

У меня ошибка «нет такой таблицы: django_comments». У меня есть комментарий таблицы в приложении «новости», поэтому, когда я открываю SQLite Manager в плагине Firefox, я вижу: таблицу «news_comment» со многими полями, такими как id, body, post_id, ect. Как связать его с этой таблицей? – Fengson

+0

Убедитесь, что у вас '' django.contrib.comments'' в 'INSTALLED_APPS', а затем запустите' manage.py syncdb'. – jbub

+0

Я забыл сделать syncdb :) Еще одна вещь - как я могу сказать Django, чтобы использовать другую таблицу? У меня есть все мои сообщения, добавленные в одно имя «news_comment», поэтому новый пуст. Могу я как-нибудь это сделать? – Fengson

Смежные вопросы