【发布时间】:2020-09-28 09:02:18
【问题描述】:
如何将字典附加到 Django 查询集中?我已经在查询集上做了 .values ,但它仍然归类为查询集,当我尝试在其上使用 .append 时,出现了这个错误
AttributeError: 'QuerySet' object has no attribute 'append'
这是我的代码:(start 和 end 是传入的变量,表示所选范围的开始月份和结束月份)
qs = CustomerInformation.objects.filter(salesDepartment__in=[d]).filter(created_date__range=(start,end))
qs = qs.annotate(date=TruncMonth('created_date')).values('date').annotate(lead_count=Count('status',filter=Q(status="lead"))).annotate(client_count=Count('status',filter=Q(status="client")))
qs = qs.values('date', 'client_count', 'lead_count')
我想要做的就是将缺失的日期添加到查询集中,例如,如果我的查询集有日期:2020 年 4 月和 2020 年 6 月,但由于 CustomerInformation 没有任何实例的 created_date 范围为2020 年 5 月,因此我希望能够插入一个日期为 May 2020 和lead_count 和 client_count 0 的字典,以便我的数据可视化能够正常工作
谢谢大家,感谢所有帮助!
【问题讨论】:
-
将其转换为列表:
list(qs)。但是我不建议你这样做,因为items的查询集类型不是dict,所以后面一定要进行类型检查。 -
我记得我之前看过你的问题,所以你可以考虑:构造一个类似于list的新类型,它是可迭代的,然后将查询结果填充到其中,然后直接使用这个新类型而不是queryset .
-
@YangHG 您所说的项目类型查询集是什么意思?
-
我现在正在做的是使用列表理解将其转换为列表,这行得通吗?