Django中JSON序列化器不工作

2 投票
2 回答
1593 浏览
提问于 2025-04-15 19:37

嘿,序列化器没有返回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'))

我们基本上是在告诉序列化器去限制字段,而不是让查询集来做这个。这里我用了一些简化的方法,把查询缩短成了一行,但这部分可以根据你的需要来调整。

撰写回答