Запросы, связанные с предварительной выборкой DjangoPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Запросы, связанные с предварительной выборкой Django

Сообщение Anonymous »

У меня есть функция
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»