gpt4 book ai didi

python - 如何解决Django中注释不一致的问题?

转载 作者:行者123 更新时间:2023-11-30 22:26:10 25 4
gpt4 key购买 nike

我有以下两行

CategoryContext = Somemodel.objects.values('title__categories__category').distinct()
CategoryContextSum = CategoryContext.annotate(Total_Revenue=Sum('revenue')).order_by('-Total_Revenue')
CategoryContextAvg = CategoryContext.annotate(Average_Revenue=Avg('revenue')).order_by('-Average_Revenue')

avg 查询生成一个对象查询列表,其中类别排在前面,然后是收入。所以基本上:

<QuerySet [{'title__categories__category':'Category', 'Average_Revenue':Decimal('100'),}, {'title__categories__category':'Category2':'Average_Revenue':Decimal('120'), }]>

另一方面,求和查询会产生收入,然后是类别,所以基本上:

<QuerySet [{'Total_Revenue':Decimal('100'), 'title__categories__category':'Category'}, {'Total_Revenue':Decimal('120'), 'title__categories__category':'Category2'}]>

现在我已经尝试翻转查询并更改变量名称,但我似乎无法弄清楚为什么这两个语句的行为如此不同。有谁知道什么会影响 Django 中的注释行为?

编辑:如果您想知道为什么我需要理解这一点:我将查询集传递给一个方法,该方法将其转换为用于生成条形图的数据,并且数据集中的第一个对象必须是该值的标识符。我可以通过检查是否确实如此并否则反转整个过程,但在我看来,这不应该是必要的

最佳答案

这与注释几乎没有关系。 Python 中的字典没有传统意义上的排序(至少在 Python 3.6 之前没有),并且键可以在不同的查询集结果中以不同的方式排序。

这几乎不构成问题,因为您将通过键而不是串行访问所需的值(与序列一样):

for obj_dct in your_qs:
print(obj_dct[some_key])

如果您的绘图函数采用字典,则无需担心顺序。

关于python - 如何解决Django中注释不一致的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47309533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com