【问题标题】:Django: Adding a non-model field into serializers.serializeDjango:将非模型字段添加到 serializers.serialize
【发布时间】:2018-08-03 12:34:17
【问题描述】:

我有以下代码:

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 我是使用注释添加的。

【问题讨论】:

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


    【解决方案1】:

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

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

    这是工作代码。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 2011-06-11
      • 1970-01-01
      相关资源
      最近更新 更多