У меня есть функция
def selected_location_equipment(self):
qs = (Equipment.objects
.prefetch_related('service_logs')
.all())
return qs
Это возвращает набор запросов с несколькими связанными полями.
Проблема в том, что когда я получаю доступ к предварительно выбранным данным позже в моем коде, он выполняется снова запрос.
Я просмотрел код Django и вижу, где он проверяет кеш на наличие .all() в одном месте и не выполняет запрос, но затем, когда он вызывается здесь, это почти похоже на очистку кеша.
На панели инструментов отладки также отображается запрос для каждой итерации цикла.
for e in equipments:
last_service = list(e.service_logs.all())[-1]
for log in e.service_logs.all():
# do other stuff
...
Вот базовое определение модели оборудования.
class ServiceLog(models.Model):
equipment = models.ForeignKey(Equipment,
on_delete=models.CASCADE,
related_name='service_logs')
Подробнее здесь: https://stackoverflow.com/questions/790 ... ll-queries
Запросы, связанные с предварительной выборкой Django ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Каковы различия между предварительной нагрузкой и предварительной фиксацией в HTML?
Anonymous » » в форуме Html - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как избежать броски httpmessageConversionException, связанные с классами, связанные с весной
Anonymous » » в форуме JAVA - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-