Python Django计算多对一关系的特定项

Python Django计算多对一关系的特定项,python,django,many-to-one,Python,Django,Many To One,我有一个Django应用程序,用户在其中发布消息,其他用户可以对答案进行上下投票,非常类似于这样。我有一个问题,试图获得“拇指向上”和“拇指向下”计数从模板内,我希望有人可以帮助我。PostVote是与Post类的多对一关系。以下是我的模型的外观: class Post(models.Model): account = models.ForeignKey(Account) message = models.CharField(max_length=1024) timest

我有一个Django应用程序,用户在其中发布消息,其他用户可以对答案进行上下投票,非常类似于这样。我有一个问题,试图获得“拇指向上”和“拇指向下”计数从模板内,我希望有人可以帮助我。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 %}
{%for posts in posts%}
竖起大拇指数:{{WHAT_HERE}}
拇指向下计数:{{WHAT_HERE}}
{%endfor%}

我怎么才能把计数放进去?我确信它在某种程度上涉及到“注释”,但我很难想出这个。任何帮助都将不胜感激

您不应该在模板中真正执行逻辑。在您的
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 %}
{%for posts in posts%}
竖起拇指计数:{post.upvote_count}
拇指向下计数:{post.downvote_count}
{%endfor%}

在视图中进行计数,并将其作为参数传入;或者通过queryset,使用queryset.count(模板中没有括号)。感谢您的回复Marcin,Matt的回答有效。我正在将一个帖子列表传递给我的模板,因此传递计数是不起作用的。谢谢你的帮助,谢谢!哼!我不知道为什么我没有考虑将函数添加到模型中。非常感谢,这正好解决了我的问题。干杯