Django中JSON序列化器不工作
嘿,序列化器没有返回JSON对象
make = Make.objects.filter(slug__exact=make)
models = Model.objects.filter(make=make).values('slug','name')
json_models = serializers.get_serializer("json")()
json_models.serialize(models)
return HttpResponse(json_models.getvalue())
我遇到了一个错误
'dict' object has no attribute '_meta'
有什么想法吗?
2 个回答
2
这个序列化器是用来处理QuerySet
实例的。如果你有普通的Python数据结构,可以使用django.utils.simplejson.dumps()
。
4
正如其他回答所提到的,问题在于 .values(...)
返回的是一个列表,而 serializers
是为了处理查询集(Querysets)而设计的。不过,你可以很简单地做到这一点,而不需要使用原始的 SimpleJSON:
queryset = Model.objects.filter(make__slug__exact=make)
return serializers.serialize("json", queryset, fields=('slug', 'name'))
我们基本上是在告诉序列化器去限制字段,而不是让查询集来做这个。这里我用了一些简化的方法,把查询缩短成了一行,但这部分可以根据你的需要来调整。