Django: отображение полей «многие ко многим» в списке изменений - PullRequest
3 голосов
/ 04 октября 2010

Django не поддерживает отображение связанных объектов из отношения «многие ко многим» в списке изменений по уважительной причине.Это может привести к большому количеству обращений к базе данных.

Но иногда это неизбежно и необходимо, например, отображать категории категорий, которые имеют отношение "многие ко многим", в списке изменений.Учитывая этот случай, есть ли у кого-нибудь опыт / фрагменты и т. Д., Чтобы немного ускорить это (подумав о кэшировании, пользовательских SQL-запросах ...)?(Мне известно о том, что я могу создать метод, который вызывает object.categories.all() ... Но это действительно может быть болью в заднице ...).

1 Ответ

1 голос
/ 27 декабря 2011

Здесь вы должны сделать выбор около denormalization в вашей модели, если считаете, что еще одно попадание в базу данных за строку в вашем списке изменений недопустимо.

Вопрос в том, каксохранить это отношение ManyToMany?Возможно, вы можете использовать синхронизированный JSON сериализованный объект в CharField или TextField для сериализации подмножества необходимых вам полей (например, pk и name).

Но будьте осторожны с побочными эффектами на производительность при добавлении потенциально большого столбца, метод отсрочки набора запросов - ваш друг.

...