Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2013 16:33:17

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

оптимизация запросов

class Model1(models.Model):
   name = models.CharField(...)
   ...
class Model2(models.Model):
   link = models.ForeignKey(Model1)
   ...
   def get_some(self):
      return self.model1_set.name
# 1 запрос
model = Model2.objects.all()[0]
# 2 запрос
name = model.get_some()

в данном примере у меня два запроса, так?
Как сократить его до одного? не исключая метод get_some.

в реальности, я получаю объекты модели, вызываю их методы. И каждый вызов метода это запрос к БД.

Отредактировано ilnur (Окт. 22, 2013 16:33:38)

Офлайн

#2 Окт. 22, 2013 17:31:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

оптимизация запросов

self.model1_set.name
Ильнур, оно так не будет работать, по крайней мере не должно
Так-то так надо
self.model1_set.all()[0].name



Офлайн

#3 Окт. 23, 2013 06:34:48

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

оптимизация запросов

спасибо.
Я думал что можно как то это сделать..

Мне надо именно так, как в первом посте, т.е. Вызывая метод объекта модели.
И если этих объектов 100к, то мелких запросов …_set будет 100к

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version