[英]How to use Django Subquery inside Annotate and Sum
我正在尝试计算一天的总收入。 每个DailyTotal都包含一个已售出商品的数量(items_sold)和当日售出的这些商品的价格(items_price)(所有商品全天以相同的价格出售)。 该部分正在工作,但现在我需要将该值乘以该天/国家/地区的汇率进行转换。
rate = ExchangeRate.objects.filter(
date=OuterRef('date'),
country=OuterRef('country')))
calc_with_rate = Sum(F('items_sold') * F('items_price') * Subquery(rate.values('rate')), output_field=FloatField(),)
results = DailyTotal.objects.filter(**query_filters).annotate(
revenue=calc_with_rate)
但我得到:
unsupported operand type(s) for +=: 'int' and 'NoneType
我认为这是因为rate.values('rate')没有返回整数。.但是我做不到
rate.values('rate')[0]
或者我得到:
This queryset contains a reference to an outer query and may only be used in a subquery.
所以我不确定如何完成此查询?
看起来您正在尝试使用int和NoneType进行+ =-即这两个变量之一返回空值,并且您正在尝试添加它们-因为您没有在其中使用+ =操作数来明确地进行操作上面的代码,我假设它发生在Sum()中。 调试它在那里所做的事情,您可能会发现问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.