pal201
Ноя. 27, 2011 13:25:53
Немного разобрался с моделью многие ко многим.
Однако остается вопрос. Если нам нужно получить всех авторов и все книги, которые они написали, как будет выглядеть запрос?
Как извлекать данные по фильтру в отношении многие ко многим более менее понятно.
Fibio
Дек. 7, 2011 00:24:02
Всех авторов или какой-то определенный список авторов и книги которые они написали?
pal201
Дек. 7, 2011 18:29:22
Спасибо за ответ.
К примеру: всех автором и все книги, который написал этот автор.
Что бы в шаблоне использовать выпадающий список к примеру.
Fibio
Дек. 8, 2011 21:53:16
Все авторы: Author.objects.all()
книги автора по имени автора: Book.objects.filter(author='Pushkin')
книги автора по id автора: Book.objects.filter(author__id = 35)
pal201
Дек. 9, 2011 16:18:12
спасибо за ответ. Однако не то что надо.
Author.objects.all() и как дальше для каждого автора все книги?
svas
Дек. 10, 2011 12:21:34
Наверное так (смотря как у вас модели определены)
pal201
Дек. 10, 2011 16:38:06
То есть должно быть 2 цикла:
например так:
a=Author.objects.all()
b=Book.objects.all()
for i in a:
for x in b:
print….
Но тогда для каждого автора выберутся все книги из базы.
Или получать id автора и сопоставлять его с id в таблице книг.
svas
Дек. 14, 2011 16:32:25
authors = Author.objects.all()
for a in authors:
print a
for b in a.book_set.all():
print '\t', b
pal201
Дек. 14, 2011 17:43:33
Ух ты!
Спасибо за помощь!
И все это добавить в новый словарь и передать в шаблон?
svas
Дек. 15, 2011 05:33:25
Не надо ничего в словарь добавлять. Передать в шаблон нужно только authors. В шаблоне почти тоже самое
{% for author in authors %}
{{author}}
{% for book in author.book_set.all %}
{{book}}
{% endfor %}
{% endfor %}
Вроде как-то так. Читайте документацию.