多个注释无法正常工作

时间:2019-07-05 13:05:12

标签: django django-queryset

使用多个带注释的查询会产生意外的结果。

当我单独使用注释时,它可以正常工作。

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)

两者都给出正确的值。谁能告诉我我在做什么错。

或者如果我对日期和销售使用单独的查询,该如何计算评分。

0 个答案:

没有答案