Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2012 17:34:52

spec
Зарегистрирован: 2012-09-29
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные запросы

Прочел это, там есть пример вложенного запроса:

inner_qs = Blog.objects.filter(name__contains='Cheddar')
entries = Entry.objects.filter(blog__in=inner_qs)
Принцип понятен, но в данном примере мы заранее знаем строку, по которой будем фильтровать. А если не знаем?
Например, первая таблица films:
| id | | producer_name_id | | film |
А во второй таблице producer:
| id | | producer_name |
Ну и связаны они “1 ко многим” (у одного producer несколько фильмов). И как получить имя продюсера и название фильма вложенным запросом? Мне просто интересен сам механизм, в админке если так связать, то выглядит и работает все очень красиво и быстро.
В нете нашел пример, что можно сначала objects.all() из таблицы producer сделать, а потом через id__in сделать запрос. Но ведь это неудобно - сначала мы получим огромный список producer_name, а нам нужны, например, имена тех, которые присутствуют в films.
Я понимаю, что можно не заморачиваться и делать так, как написано выше, ну а если в producer 1000000 позиций?

Офлайн

#2 Окт. 19, 2012 19:25:28

spec
Зарегистрирован: 2012-09-29
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные запросы

+ во вложенном запросе может быть указан только один select.
Объясните, я не понял, как вообще получить имя producer

Отредактировано spec (Окт. 19, 2012 20:46:16)

Офлайн

#3 Окт. 21, 2012 10:33:33

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

Вложенные запросы

produser=Produsers.objects.get(pk=1)
films=Films.objects.filter(produser=produser)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version