【问题标题】:Django: Group by date then calculate Sum of amount for each dateDjango:按日期分组,然后计算每个日期的金额总和
【发布时间】:2019-01-04 10:47:05
【问题描述】:

我有一个类似的 django 模型。它存储一段时间内发生的总交易。

class Transaction(models.Model):
    amount = models.FloatField()
    seller = models.ForeignKey(User, related_name='sells', on_delete=models.CASCADE)
    buyer = models.ForeignKey(User, related_name='purchased', on_delete=models.CASCADE)
    created_at_date = models.DateField(auto_now_add=True)

我的问题:

我怎样才能找到每天的交易总额。对于每一天,它应该计算当天所有交易的总和。

例如,我需要在过去 7 天内执行此操作。

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    找到了解决办法,下面的查询就可以了:

    Transaction.objects.filter().values('created_at__date').order_by('created_at__date').annotate(sum=Sum('amount'))
    

    结果将是:

    <QuerySet [{'created_at__date': datetime.date(2019, 1, 3), 'sum': 10000000.0}, {'created_at__date': datetime.date(2019, 1, 4), 'sum': 4367566577.0}]>
    

    【讨论】:

    • 如果我们想得到查询集结果中没有交易的一天的金额总和怎么办?
    • 我在 python 中做到这一点。首先,找到这个查询集结果,然后将迭代日期并将日期值填充为零(如果不在此列表中)。
    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多