从几个模型中添加 django 字段

Add up django fields from several models

我的应用程序有几个 post 类型,每个 post 类型都是一个模型,每个模型都有一个名为 "up_vote" 和 "down_vote" 的字段。现在我想向用户显示所有这些字段的总和,以便我计算 request.user.model1.up_vote + request.user.model2.up_vote + request.user。 model3.up_vote 与 down_vote 相同。

但我不知道查询在我看来应该是什么样子。 最后我只想显示用户创建的所有 post 的整体 up/down_votes。

models.py

# code example

class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(verbose_name="Title", max_length=30)
    ...
    up_vote = models.IntegerField(default=0)
    down_vote = models.IntegerField(default=0)


class Post_Vote(models.Model):
    voter = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
    voted = models.ForeignKey(Post, on_delete=models.CASCADE)

    class Meta:
        unique_together = ('voter', 'voted')

感谢阅读:)

您可以使用 aggregate 例如

from django.db.models import Sum

user = User.objects.get(...)
up_vote_count = Post.objects.filter(user=user).aggregate(Sum('up_vote'))
down_vote_count = Post.objects.filter(user=user).aggregate(Sum('down_vote'))