Django2总金额
我有两张桌子。表A为Django2总金额,django,aggregate,django-queryset,Django,Aggregate,Django Queryset,我有两张桌子。表A为 +--+------------------+ | ID | Fastivalname | +--+------------------+ | 1 | 2020Xmas | +--+------------------+ | 2 | 2019Xmas | +--+------------------+ | 3 | 2020Thanksgiving | +--+------------------+ | 4 | 2019Th
+--+------------------+
| ID | Fastivalname |
+--+------------------+
| 1 | 2020Xmas |
+--+------------------+
| 2 | 2019Xmas |
+--+------------------+
| 3 | 2020Thanksgiving |
+--+------------------+
| 4 | 2019Thanksgiving |
+--+—————————+
Fastival是表B的ForeignKey,表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)
请有人告诉我如何在Django2中获得“2020xxx的游戏
中的金额”
我尝试了
context[“money”]=TableB.objects.filter(fastival\u id=TableA.objects.filter(Fastivalname\u 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']