1

我目前正在使用 django 开发 REST api。我开始使用漂亮的 djangorestframework,我喜欢使用“View”类。但是,我面临着序列化问题。我不喜欢使用 Serializer 类的序列化。主要目标是准备一种包含所有信息的巨型字典,并将其提供给渲染器类,该类根据“Accept:”HTTP 标头将其转换为 xml、json、yaml。目标是优雅的,但 60% 的 CPU 时间用于创建“GIANT DICT”。

这个 dict 可以使用 django 模型创建,但我认为使用动态实例化的类和对象非常不高效?我正在尝试使用一些 QuerySet 方法来过滤我想要的模型成员,并获得一个简单的 dict : ::values() 方法,但不幸的是,我无法从我的模型中访问 m2m 和外键。

你已经试过了吗?有吗?

4

1 回答 1

1

您可以使用 QuerySet 的iterator方法:

...对于返回大量对象的查询集,您只需要访问一次,这可以提高性能并显着减少内存。

您的代码应如下所示:

for obj in SomeModel.objects.values_list('id', 'name').iterator():
    # do something
于 2012-01-05T22:09:25.667 回答