使用多个带注释的查询会产生意外的结果。
当我单独使用注释时,它可以正常工作。
event_queryset = OrderItemTable.objects.annotate(days=Sum(TIMESTAMPDIFF(f_date_ord, l_date, unit='Day')*F(
'prev_order_items__qty')/30, filter=filter), sales=Sum(TIMESTAMPDIFF(f_date_sale, l_date, unit='Day')*F(
'sales_order_items__qty')/30), rating = Cast(F('sales')/F('days'), FloatField(2)))
或
event_queryset = OrderItemTable.objects.annotate(days=Sum(TIMESTAMPDIFF(f_date_ord, l_date, unit='Day')*F(
'prev_order_items__qty')/30, filter=filter)).annotate(sales=Sum(TIMESTAMPDIFF(f_date_sale, l_date, unit='Day')*F(
'sales_order_items__qty')/30)).annotate(rating = Cast(F('sales')/F('days'), FloatField(2)))
在两个查询中,天变量为某些项目提供了错误的值。 销售很好。如果我这样做:
event_queryset_days = OrderItemTable.objects.annotate(days=Sum(TIMESTAMPDIFF(f_date_ord, l_date, unit='Day')*F(
'prev_order_items__qty')/30, filter=filter))
event_queryset_sales = OrderItemTable.objects.annotate(sales=Sum(TIMESTAMPDIFF(f_date_sale, l_date, unit='Day')*F(
'sales_order_items__qty')/30)
两者都给出正确的值。谁能告诉我我在做什么错。
或者如果我对日期和销售使用单独的查询,该如何计算评分。