Есть один способ.Вы можете создать свой собственный кеш.
Логика заключается в следующем:
- Предположим, есть модель
A
и B
. - Определить
search_result
поле как None
в B
модели. - Когда вы выполняете запрос (поиск) через
A
модель, просто отметьте значение B.search_result
, если оно None
, измените значение search_result
на запросрезультат (убедитесь, что ваш запрос выполнен) и верните его.Если это не None
возвращаемое значение (B.search_result
). - При наличии манипуляции (вставка, удаление, обновление) в вашей модели
A
изменить B.search_result
на Нет.
Это простое кеширование ваших данных.И когда вы используете методы all()
, filter(**kwargs)
в наборе запросов, он не выполняет запрос, поэтому поместите его в список или поместите в json
, чтобы изменить значение B.search_result
.