Django:将非模型字段添加到serializers.serialize

时间:2018-02-23 12:36:53

标签: json django django-models django-queryset django-serializer

我有以下代码:

pending_invoices=invoice.objects.filter(user=request.user,customer=pk).annotate(sum_invoices=Sum('invoicereceipt__amount'))
    pending_invoice=pending_invoices.filter(~Q(sum_invoices=0))
    invoices=serializers.serialize('json', pending_invoice,fields=("number","sum_invoices"))
    return HttpResponse(invoices,content_type='application/json')

我正在尝试通过ajax获取JSON数据。 我可以在输出中成功获得number字段。但是我注释了sum_invoices并且在json输出中没有得到这个值。

我的问题是我的上述代码是否正确,如果没有,那么如何将注释字段和结果添加到我的json输出中?

编辑:

invoices=serializers.serialize('json', pending_invoice,fields=("number","sum_invoices"))

在上面这一行"number"是我模型中的一个字段,sum_invoices是我使用注释添加的。

1 个答案:

答案 0 :(得分:0)

刚刚得到了解决方案。我正在使用serializers.serialize并将模型转换为json数据,并且不考虑模型中存在的任何字段。

所以最好的使用方式是json.dumps

这是工作代码。

invoices = json.dumps(list(pending_invoice), cls=DjangoJSONEncoder)