Форум сайта python.su
1) Перед кэширование нужно сделать полную выборку из таблицы со связанными данными, точнее только с переводами.
В главный QuerySet должно подгрузиться поле name из таблицы переводов
Делаю так
list(модель.objects.select_related(depth=1).all())
Отредактировано (Окт. 13, 2009 19:47:04)
Офлайн
Вообще-то, если Вы сохраните в сессию запикленные результаты выборки из БД, то это будет равносильно записыванию этих данных обратно в БД… Ведь данные сессии хранятся в таблице сессий.
Не лучше ли вообще обойтись без пикла, а брать запрос?
# сохраняем запрос:
request.session["data_query"] = модель.objects.select_related(depth=1).all().query
# на нужной странице восстанавливаем:
data = модель.objects.all()
# и сразу же, пока этот запрос не выполнился -- нам ведь не нужные все данные на самом деле, заменяем его на наш нужный:
data.query = request.session["data_query"]
# ... любые операции с data
Отредактировано (Окт. 14, 2009 19:25:06)
Офлайн
LolkaРазве запрос .all() не будет выполнен синхронно в той строке где вызван?
Вообще-то, если Вы сохраните в сессию запикленные результаты выборки из БД, то это будет равносильно записыванию этих данных обратно в БД… Ведь данные сессии хранятся в таблице сессий.
Не лучше ли вообще обойтись без пикла, а брать запрос?# сохраняем запрос:
request.session["data_query"] = модель.objects.select_related(depth=1).all().query
# на нужной странице восстанавливаем:
data = модель.objects.all()
# и сразу же, пока этот запрос не выполнился -- нам ведь не нужные все данные на самом деле, заменяем его на наш нужный:
data.query = request.session["data_query"]
# ... любые операции с data
Отредактировано (Окт. 16, 2009 16:44:22)
Офлайн
Nick2009Нет. А вот в Вашем случае – вы форсируете выполнение – list'ом.
Разве запрос .all() не будет выполнен синхронно в той строке где вызван?
Офлайн
LolkaПонятно. Но это очень плохо.Nick2009Нет. А вот в Вашем случае – вы форсируете выполнение – list'ом.
Разве запрос .all() не будет выполнен синхронно в той строке где вызван?
Офлайн