【问题标题】:JSON serializers not working in DjangoJSON 序列化程序在 Django 中不起作用
【发布时间】:2010-02-23 11:52:05
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: python django json


    【解决方案1】:

    正如其他答案提示的那样,这是因为.values(...) 返回一个列表,而serializers 用于查询集。但是,您仍然可以在不需要原始 SimpleJSON 的情况下非常简单地做到这一点:

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

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

    【讨论】:

      【解决方案2】:

      序列化程序用于QuerySet 实例。如果您有正常的 Python 结构,请使用 django.utils.simplejson.dumps()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-27
        • 2023-03-24
        • 2023-03-18
        • 2019-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-21
        相关资源
        最近更新 更多