我有一个模型,它有很多字段,但是对于这个问题,我只需要其中的3个字段。当我尝试序列化.values
集时,我得到一个异常:
'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序列化程序只能序列化queryset,^{} 不返回queryset,而是返回
ValuesQuerySet
对象。因此,避免使用values()
。相反,在序列化方法中指定要在values()
中使用的字段,如下所示:以这个SO question为例
如上图所示,使用
serializers.serialize()
的fields
参数指定这些字段,而不是使用objectQuerySet.values('fileName','id')
从objectQuerySet生成列表:
正如其他人所说,Django的serializers无法处理ValuesQuerySet。但是,您可以通过使用标准
json.dumps()
进行序列化,并通过使用list()
将ValuesQuerySet转换为列表。如果您的集合包含Django字段,如小数,则需要传入DjangoJSONEncoder。因此:相关问题 更多 >
编程相关推荐