我有一个Django应用程序,用户发布消息,其他用户可以向上或向下投票,非常类似于SO。我有一个问题试图从模板中获得“竖起大拇指”和“竖起大拇指”,我希望有人可以帮助我。 PostVote与Post类是多对一的关系。这是我的模型的样子:
class Post(models.Model):
account = models.ForeignKey(Account)
message = models.CharField(max_length=1024)
timestamp = models.DateTimeField('post timestamp')
class PostVote(models.Model):
post = models.ForeignKey(Post)
account = models.ForeignKey(Account)
vote = models.CharField(max_length=16, choices=VOTE_CHOICES)
timestamp = models.DateTimeField('vote timestamp')
以下是我收到帖子的方式:
posts = Post.objects.all().order_by('-timestamp')[:10]
我的模板大致如下:
{% for post in posts %}
<div>Thumbs up count: {{ WHAT_HERE }}</div>
<div>Thumbs down count: {{ WHAT_HERE }}</div>
{% endfor %}
我如何获得那里的计数?我确定它会以某种方式涉及“注释”,但我很难想出这个。任何帮助将不胜感激!
答案 0 :(得分:0)
你不应该在模板中真正做逻辑。为您的Post
模型添加几个计数方法:
class Post(models.Model):
account = models.ForeignKey(Account)
message = models.CharField(max_length=1024)
timestamp = models.DateTimeField('post timestamp')
def upvote_count(self):
return self.postvote_set.filter(vote=VOTE_CHOICES[0][0]).count()
def downvote_count(self):
return self.postvote_set.filter(vote=VOTE_CHOICES[1][0]).count()
然后在模板中使用它们:
{% for post in posts %}
<div>Thumbs up count: {{ post.upvote_count }}</div>
<div>Thumbs down count: {{ post.downvote_count }}</div>
{% endfor %}