Контекст: наш проект имеет сериализаторы DRF, охватывающие отношения ForeignKey.Поэтому, когда я получаю ListView своих объектов, я получаю дополнительный удар по БД для каждого объекта, то есть список из 100 элементов дает мне 100 дополнительных запросов к БД.Нехорошо.Чтобы исправить это, я использую select_related
/ prefetch_related
в своих представлениях, чтобы выполнить необходимые объединения перед сериализацией.
Проблема : Трудно идти в ногу со всеми select_related
в представлениях, особенно когда разные разработчики работают с одинаковыми функциями и сериализаторами.Поэтому мне было интересно, есть ли способ запретить доступ к БД в функции (будь то просмотр или метод сериализатора и т. Д.).Первая идея заключалась в том, чтобы обернуть его в декораторе, который считает connection.queries
, но этот счетчик всегда пуст в производстве (когда DEBUG=False
).
Так есть ли другой способ подсчета запросов в БД, когда DEBUG
равен False
?