【问题标题】:Convert Django queryset to dictionnary in a JSON serialization purpose在 JSON 序列化目的中将 Django 查询集转换为字典
【发布时间】:2014-12-21 22:01:24
【问题描述】:

我正在创建一个 API,我需要以字典格式返回数据,以便它可以被序列化(通过 API 机制)。

当前工作的代码很简单:

def mymethod(self):

    queryset1 = MyClass.objects.get(...) # Ccontains 1 object, easy to deal with
    queryset2 = OtherClass.objects.filter(...) # Contains N objects, hard to deal with !

    return {
        'qs1_result': queryset1.some_attribute # This works well
    }

从 queryset1 返回数据很容易,因为有 1 个对象。我只需选择我需要的属性,它就可以工作。现在假设另外,我想从queryset2返回数据,那里有很多对象,我不需要对象的每个属性。

你会怎么做?

我再说一遍,我不需要自己进行序列化。我只需要返回结构化数据,以便进行序列化。

非常感谢。

【问题讨论】:

    标签: python json django api serialization


    【解决方案1】:

    来自 Django 文档:https://docs.djangoproject.com/en/dev/topics/serialization/#subset-of-fields

    字段的子集 如果您只想序列化字段的子集,则可以为序列化程序指定 fields 参数:

    from django.core import serializers
    data = serializers.serialize('json', SomeModel.objects.all(), fields=('name','size'))
    

    在这个例子中,只有每个模型的名称和尺寸属性会被序列化。

    【讨论】:

    • 我不能自己序列化数据。我只需要在结构化字典中返回数据。
    • 是的,谢谢,我也看到了。这是第一步,因为它给了我一个包含 N 个字典的列表(查询集中每个对象一个字典)。
    猜你喜欢
    • 2020-04-01
    • 1970-01-01
    • 2017-01-23
    • 2021-08-06
    • 2021-09-15
    • 2012-03-27
    • 2012-09-12
    • 2015-08-16
    • 2019-12-17
    相关资源
    最近更新 更多