Использование Django ORM для сериализации данных и связанных элементов - PullRequest
1 голос
/ 06 января 2012

В настоящее время я работаю над REST API, используя Django.Я начал использовать хорошую djangorestframework, которую я любил использовать класс "View".Но я столкнулся с проблемой сериализации.Мне не нравится сериализация с использованием классов Serializer.Основная цель состоит в том, чтобы подготовить нечто вроде гигантского dict со всей информацией и передать его классу визуализации, который переводит его в xml, json, yaml, в зависимости от HTTP-заголовка «Accept:».Цель классная, но 60% процессорного времени тратится на создание "GIANT DICT".

Этот дикт может быть создан с использованием моделей django, но я думаю, что использование на лету инстанцированных классов и объекта ОЧЕНЬнеэффективно?Я пытаюсь использовать некоторые методы QuerySet, чтобы отфильтровать, какой член модели я хочу иметь, и получаю простой dict: метод :: values ​​(), но, к сожалению, я не могу получить доступ к m2m и чужому ключу из моих моделей.

Вы уже пробовали это?Любой хоть?

1 Ответ

1 голос
/ 06 января 2012

Вы можете использовать метод QuerySet iterator:

... Для QuerySet, который возвращает большое количество объектов, которые вы только необходимо получить доступ один раз, это может привести к повышению производительности и значительное уменьшение памяти.

Ваш код должен выглядеть так:

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