我正在使用Django,这是一个关于如何组织模型的问题,或者等效地在SQL中组织表。
目前我有一个表,其中每行包含一个主键,一个“值”(0.01的浮点倍数)和一个“数量”(整数)。这就是我需要这些数据的方式。
但是,我需要以不同的方式提供服务。我需要将具有相同“值”的行的“金额”相加。
示例,我的表是
| id | value | amount |
| 1 | 1.2 | 10 |
| 2 | 1.2 | 27 |
| 3 | 1.2 | 4 |
| 4 | 1.3 | 21 |
| 5 | 1.3 | 1 |
| 6 | 1.4 | 5 |
| 7 | 1.4 | 9 |
对于我的应用,我需要将其作为
| value | amount |
| 1.2 | 41 |
| 1.3 | 22 |
| 1.4 | 14 |
现在我的问题是:最好的方法是什么?每次我需要服务时,我应该从第一个表生成第二个表吗?或者我应该在我的应用程序中添加一个新模型,每次我的当前模型更新时都会更新,因此包含冗余信息但是更快地完成工作?
编辑:
qb = Order.objects.filter(
models.Q(status='B')|models.Q(status='K')
).filter(
side='L', market__pk=self.pk
).order_by(
'-value'
).values('value').annotate(amount_sum=Sum('amount'))
输出
[{'amount_sum': 22, 'value': Decimal('1.3')}, {'amount_sum': 41, 'value': Decimal('1.2')}]
答案 0 :(得分:1)
from django.db.models import Sum
MyTable.objects.values('value').annotate(amount_sum=Sum('amount'))
这将返回包含value
和amount_sum
的词典列表。您可以将amount_sum
命名为。