我被一个问题困住了,哪里也找不到解决方案.

模型中的柱为

category
date
amount

我需要获得每个类别的总金额,并在模板中显示每个月.像这样的东西

Category---month1---Month2
A           100       180
B           150       200

我已经try 了下面的查询,但似乎不起作用.

queryresult = model.objects.filter().values('category').annotate(total='amount')

它确实给出了每个类别的总数,但我如何按月安排呢?基本上每个月的分类总数是多少?

编辑: 正在try 检索以下格式的查询结果:

categoryA{
month1{total}
month2{total}
}
categoryB{
month1{total}
month2{total}
}

推荐答案

使用Django ORM不能直接 struct 化查询,您可能需要根据您在Python中的需求来 struct 化查询.

from itertools import groupby
from operator import itemgetter
from django.db.models.functions import ExtractMonth

# adjust the query set as per your requirements
quesryset = model.objects.values('category', month=ExtractMonth('date')).annotate(total=Sum('amount')).order_by(
    'category', 'month')

# Process query set in python to get desired output
result_dict = {}
for category, entries in groupby(quesryset, key=itemgetter('category')):
    result_dict[category] = [{'month': entry['month'], 'total': entry['total']} for entry in entries]

Django相关问答推荐

Django相关对象引用模板

Djnago admin中 Select 字段的自定义查询

如何在Django中获取标记<;输入>;的';值';属性?

通过get_form_kwargs将请求传递给Django表单未能使表单访问self.request.user.

当从 fastapi 发送请求时,Django 无法对 Postgres 执行查询

django 的 Manager.create() 方法有什么作用?

如何在Django中制作一个不 Select 以前日期的日期 Select 器

如何根据查询集中的条件返回多个聚合?

使用 Python/Django 上传大文件

Django 独立脚本

如何查看 Django 调试工具栏?

在 Bootstrap 中使单击的选项卡处于活动状态

有没有办法将变量传递给 Django 中的 extended模板?

Django - 如何在其管理模块中访问模型的详细名称?

更新Django模型对象多个字段的有效方法

Python/Django:从 values_list() 创建一个更简单的列表

在 Django 中使用 AuthenticationForm

如何在 Django 中测试自定义模板标签?

django 我们可以在预取相关模型上 Select 一个字段吗?

在 Django 中使用 select_related Select 特定字段