JSON序列化程序无法在Django中工作

时间:2010-02-23 11:52:06

标签: python django json

Hay,序列化程序没有返回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 个答案:

答案 0 :(得分:4)

正如其他答案提示的那样,因为.values(...)返回一个列表而serializers用于Querysets。但是,您仍然可以在不需要原始SimpleJSON的情况下完成此操作:

queryset = Model.objects.filter(make__slug__exact=make)
return serializers.serialize("json", queryset, fields=('slug', 'name'))

我们基本上是告诉序列化程序进行字段限制而不是让Queryset这样做。我在那里使用了一些快捷方式将查询减少到一行,但这取决于你。

答案 1 :(得分:2)

序列化程序旨在用于QuerySet个实例。如果你有一个普通的Python结构,请使用django.utils.simplejson.dumps()