Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2011 13:25:53

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

Немного разобрался с моделью многие ко многим.
Однако остается вопрос. Если нам нужно получить всех авторов и все книги, которые они написали, как будет выглядеть запрос?
Как извлекать данные по фильтру в отношении многие ко многим более менее понятно.



Отредактировано (Дек. 1, 2011 17:11:54)

Офлайн

#2 Дек. 7, 2011 00:24:02

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

Всех авторов или какой-то определенный список авторов и книги которые они написали?



Офлайн

#3 Дек. 7, 2011 18:29:22

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

Спасибо за ответ.
К примеру: всех автором и все книги, который написал этот автор.
Что бы в шаблоне использовать выпадающий список к примеру.



Офлайн

#4 Дек. 8, 2011 21:53:16

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

Все авторы: Author.objects.all()
книги автора по имени автора: Book.objects.filter(author='Pushkin')
книги автора по id автора: Book.objects.filter(author__id = 35)



Офлайн

#5 Дек. 9, 2011 16:18:12

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

спасибо за ответ. Однако не то что надо.
Author.objects.all() и как дальше для каждого автора все книги?



Офлайн

#6 Дек. 10, 2011 12:21:34

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

Наверное так (смотря как у вас модели определены)

author.book_set.all()



Офлайн

#7 Дек. 10, 2011 16:38:06

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

То есть должно быть 2 цикла:
например так:
a=Author.objects.all()
b=Book.objects.all()
for i in a:
for x in b:
print….

Но тогда для каждого автора выберутся все книги из базы.
Или получать id автора и сопоставлять его с id в таблице книг.



Офлайн

#8 Дек. 14, 2011 16:32:25

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

authors = Author.objects.all()
for a in authors:
print a
for b in a.book_set.all():
print '\t', b



Офлайн

#9 Дек. 14, 2011 17:43:33

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

Ух ты!
Спасибо за помощь!
И все это добавить в новый словарь и передать в шаблон?



Офлайн

#10 Дек. 15, 2011 05:33:25

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

Выборка из базы ManyToMany

Не надо ничего в словарь добавлять. Передать в шаблон нужно только authors. В шаблоне почти тоже самое

{% for author in authors %}
{{author}}
{% for book in author.book_set.all %}
{{book}}
{% endfor %}
{% endfor %}
Вроде как-то так. Читайте документацию.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version