我正在尝试计算一天的总收入。每个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')没有返回一个int .. 但我无法做到
rate.values('rate')[0]
或者我得到:
This queryset contains a reference to an outer query and may only be used in a subquery.
所以我不确定如何完成此查询?
答案 0 :(得分:1)
看起来你正试图使用int和NoneType进行+ = - 即这两个变量中的一个返回空,并且你正试图添加它们 - 因为你没有用+ +明确地做它=上面代码中的操作数,我假设它发生在Sum()中的某个地方。调试它在那里做了什么,你可能会发现问题。