使用Django ORM序列化数据和相关成员

使用Django ORM序列化数据和相关成员,django,rest,serialization,django-orm,django-rest-framework,Django,Rest,Serialization,Django Orm,Django Rest Framework,我目前正在使用django开发RESTAPI。我开始使用尼斯Djangorest框架,我喜欢使用“视图”类。 但是,我面临着序列化问题。 我不喜欢使用序列化程序类进行序列化。 主要目标是准备一种包含所有信息的巨型dict,并将其提供给渲染器类,该类将其转换为xml、json、yaml,具体取决于“Accept:”HTTP头。目标是一流的,但60%的CPU时间用于创建“巨型DICT” 这个dict可以使用django模型创建,但是我认为使用动态实例化的类和对象是非常没有效率的?我试图使用一些Que

我目前正在使用django开发RESTAPI。我开始使用尼斯Djangorest框架,我喜欢使用“视图”类。 但是,我面临着序列化问题。 我不喜欢使用序列化程序类进行序列化。 主要目标是准备一种包含所有信息的巨型dict,并将其提供给渲染器类,该类将其转换为xml、json、yaml,具体取决于“Accept:”HTTP头。目标是一流的,但60%的CPU时间用于创建“巨型DICT”

这个dict可以使用django模型创建,但是我认为使用动态实例化的类和对象是非常没有效率的?我试图使用一些QuerySet方法来过滤我想要的模型成员,并得到一个简单的dict:the::values()方法,但不幸的是,我无法从我的模型访问m2m和foreignkey


你已经试过了吗?尽管如此?

您可以使用QuerySet的方法:

。。。对于只返回大量对象的QuerySet 需要访问一次,这会导致更好的性能和 记忆力显著下降

您的代码应该如下所示:

for obj in SomeModel.objects.values_list('id', 'name').iterator():
    # do something

您可以使用QuerySet的方法:

。。。对于只返回大量对象的QuerySet 需要访问一次,这会导致更好的性能和 记忆力显著下降

您的代码应该如下所示:

for obj in SomeModel.objects.values_list('id', 'name').iterator():
    # do something

听起来很有趣。我明天早上试试看!抱歉,问题是orm会为每个结果动态实例化一个对象。这是我不想要的东西。顺便说一句,使用SomeModel.objects.values().iterator()可能非常有趣。但我不想生成对象,而且我确实需要SomeModel中的关系(ForeignKey,M2M:)是的,
iterator()
可以与
values\u list()
一起使用,很抱歉,这不是一个有用的示例。我已经更新了答案,我将尝试看看它是如何处理M2M关系的,但我认为它并不能衡量如何使用模型实例或元组,因为如果您不通过引用传递它,垃圾收集器将在下一次迭代中删除。不管怎么说,这只是猜测,只是分析可以发现使用什么听起来很有趣。我明天早上试试看!抱歉,问题是orm会为每个结果动态实例化一个对象。这是我不想要的东西。顺便说一句,使用SomeModel.objects.values().iterator()可能非常有趣。但我不想生成对象,而且我确实需要SomeModel中的关系(ForeignKey,M2M:)是的,
iterator()
可以与
values\u list()
一起使用,很抱歉,这不是一个有用的示例。我已经更新了答案,我将尝试看看它是如何处理M2M关系的,但我认为它并不能衡量如何使用模型实例或元组,因为如果您不通过引用传递它,垃圾收集器将在下一次迭代中删除。不管怎么说,这只是猜测,只是分析可以发现使用什么