如何将 Django queryset.values() 序列化为 json? [英] How to serialize Django queryset.values() into 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屋!