我正在尝试执行一个带有多个注释的查询,但我一直在得到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())
)