首页 > 解决方案 > 从几个模型中添加 django 字段

问题描述

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

但我不知道查询在我的观点中看起来如何。最后,我只想显示用户创建的所有帖子的整体 up/down_votes。

模型.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')

谢谢阅读:)

标签: djangodjango-queryset

解决方案


您可以使用聚合,例如

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'))

推荐阅读