表达式包含混合类型:DecimalField、IntegerField.必须设置output_field



我正在尝试执行一个带有多个注释的查询,但我一直在得到output_field必需的错误,因为我已经在写了。

我试图将输出更改为十进制,但没有成功。知道吗?

我的目标代码

count = ShareAllocation.objects.filter(session_key=self.storage.request.session.session_key). 
values('share_type__id', 'share_type__code', 'share_type__type'). 
annotate(share_count=Sum('share_type__id')). 
annotate(total_shares=Sum('number_of_shares')). 
annotate(total_paid=ExpressionWrapper(F('amount_paid') * F('total_shares'), output_field=models.IntegerField)).
annotate(total_unpaid=ExpressionWrapper(
F('amount_unpaid') * F('total_shares'), output_field=models.IntegerField
)
).
count()
if count == 0:
return False
else:
return True

以下代码适用于我。字段类型后面可能缺少parens。

class PCSTradeManager(Manager):
def get_queryset(self):
return super(PCSTradeManager, self).get_queryset().annotate(
income = ExpressionWrapper(F('count_contracts') * F('credit') * Value(00), output_field=DecimalField())
)

最新更新