如何将 Django queryset.values() 序列化为 json? [英] How to serialize Django queryset.values() into json?

查看:32
本文介绍了如何将 Django queryset.values() 序列化为 json?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含许多字段的模型,但是对于这个问题,我只需要其中的 3 个字段.当我尝试序列化 .values 集时,出现异常:

I have a model that has many fields, however for this problem I only need 3 of those fields. When I try to serialize a .values set I get an exception:

'dict' 对象没有属性 '_meta'

'dict' object has no attribute '_meta'

这是我的代码:

queryset = myModel.objects.filter(foo_icontains=bar).values('f1', 'f2', 'f3')
serialized_q = serializers.serialize('json', queryset, ensure_ascii=False)

推荐答案

Django 序列化器只能序列化查询集,values() 不返回查询集而是 ValuesQuerySet 对象.因此,避免使用 values().相反,在序列化方法中指定您希望在 values() 中使用的字段,如下所示:

Django serializers can only serialize queryset, values() does not return queryset rather ValuesQuerySet object. So, avoid using values(). Rather, specifiy the fields you wish to use in values(), in the serialize method as follows:

看看这个SO问题例如

objectQuerySet = ConventionCard.objects.filter(ownerUser = user)
data = serializers.serialize('json', list(objectQuerySet), fields=('fileName','id'))

不要使用 objectQuerySet.values('fileName','id'),而是使用 serializers.serialize()<的 fields 参数指定这些字段/code> 如上所示.

Instead of using objectQuerySet.values('fileName','id'), specify those fields using the fields parameter of serializers.serialize() as shown above.

这篇关于如何将 Django queryset.values() 序列化为 json?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆