django - 在 Django2 上汇总总和
问题描述
我有 2 张桌子。表 A 是
+--+------------------+
| ID | Fastivalname |
+--+------------------+
| 1 | 2020Xmas |
+--+------------------+
| 2 | 2019Xmas |
+--+------------------+
| 3 | 2020Thanksgiving |
+--+------------------+
| 4 | 2019Thanksgiving |
+--+—————————+
Fastival 是表 B 的外键,表 B 是
+--+------------------+ ------------------+------------------+
| ID | fastival_name_id | money | useofmoney |
+--+------------------+ ------------------+------------------+
| 1 | 1 | 100 | game
+--+------------------+ ------------------+------------------+
| 2 | 1 | 20 | clothes
+--+------------------+ ------------------+------------------+
| 3 | 3 | 50 | food
+--+------------------+ ------------------+------------------+
| 4 | 4 | 10 | game
+--+------------------+ ------------------+—————————+
| 1 | 2 | 30 | food
+--+------------------+ ------------------+------------------+
| 2 | 3 | 15 | game
+--+------------------+ ------------------+—————————+
和models.py是:
class TableA(models.Model):
Fastivalname = models.CharField(max_length=50)
class TableB(models.Model):
fastival_name = models.ForeignKey(to=TableA, related_name="TableA_Fastival_name", on_delete=models.CASCADE)
money = models.IntegerField(default=0)
useofmoney = models.CharField(max_length=200, null=True, blank=True)
请有人告诉我如何在game
Django2 中获得“2020xxx 的总金额”?
我试过了context["money"] = TableB.objects.filter(fastival_id=TableA.objects.filter(Fastivalname__startswith=2020.values('id')[0]['id']).filter(useofmoney="game").aggregate(Sum('money'))['money']
。但是那个回答“无”......
解决方案
您可以使用单个查询来执行此操作,TableB
并使用双下划线语法对相关模型/表执行连接/过滤器
TableB.objects.filter(
fastival__Fastival__startswith='2020',
useofmoney='game'
).aggregate(total=Sum('money'))['total']
推荐阅读
- php - 在 symfony 中集成 Gitlab 提供身份验证问题
- android - 将数据显示到自定义 listView 的问题
- vue.js - 添加路径时,作为子域的 VueJS 应用程序抛出 404
- postgresql - 在 Postgres 中高效循环 VARIADIC
- c - C语言scanf中“%d”和“%d”的区别
- slack - 在 Slack 集成 RASA 聊天机器人中添加基于按钮的问题?
- javascript - 在javascript中将十进制数转换为百分比
- python - 无法使用 pandas read_csv 解析自定义日志文件格式
- java - 为什么我的身份验证提供者没有联系到?
- python-3.x - 在 setup.py 中找出这个包是从哪个存储库安装的?