Django字段小部件没有显示适当的属性

时间:2013-12-31 16:37:12

标签: sql django

我正在使用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')}]

1 个答案:

答案 0 :(得分:1)

from django.db.models import Sum
MyTable.objects.values('value').annotate(amount_sum=Sum('amount'))

这将返回包含valueamount_sum的词典列表。您可以将amount_sum命名为。

Django doc for Sum