django - 从几个模型中添加 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')
谢谢阅读:)
解决方案
您可以使用聚合,例如
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'))
推荐阅读
- javascript - 如何使用 onClick 从 JSX 组件向反应函数组件传递参数
- java - 项目命令无法识别项目 Spigot
- vb.net - 控制异步操作的数量
- google-cloud-platform - 当我有多个要转换的数据文件 (.txt) 时,如何使用 DataFusion 执行 ETL 操作?在 Datafusion UI 中使用函数
- java - Spring RetryTemplate 返回使用
- android - 为什么当用户导航到另一个片段时调用 ViewModel onCleared() 但在设备旋转后不调用?
- sockets - 我需要在客户端套接字应用程序上使用 Dart 的惯用解决方案
- vb.net - Discord.Net 2.0 向特定频道发送消息
- sapui5 - SAPUI5 Smart Filterbar 数据源过滤器
- reactjs - 必须刷新才能根据自定义声明更改导航(ReactJS 和 Firebase 自定义声明)