Форум сайта python.su
Немного разобрался с моделью многие ко многим.
Однако остается вопрос. Если нам нужно получить всех авторов и все книги, которые они написали, как будет выглядеть запрос?
Как извлекать данные по фильтру в отношении многие ко многим более менее понятно.
Отредактировано (Дек. 1, 2011 17:11:54)
Офлайн
Всех авторов или какой-то определенный список авторов и книги которые они написали?
Офлайн
Спасибо за ответ.
К примеру: всех автором и все книги, который написал этот автор.
Что бы в шаблоне использовать выпадающий список к примеру.
Офлайн
Все авторы: Author.objects.all()
книги автора по имени автора: Book.objects.filter(author='Pushkin')
книги автора по id автора: Book.objects.filter(author__id = 35)
Офлайн
спасибо за ответ. Однако не то что надо.
Author.objects.all() и как дальше для каждого автора все книги?
Офлайн
Наверное так (смотря как у вас модели определены)
author.book_set.all()
Офлайн
То есть должно быть 2 цикла:
например так:
a=Author.objects.all()
b=Book.objects.all()
for i in a:
for x in b:
print….
Но тогда для каждого автора выберутся все книги из базы.
Или получать id автора и сопоставлять его с id в таблице книг.
Офлайн
authors = Author.objects.all()
for a in authors:
print a
for b in a.book_set.all():
print '\t', b
Офлайн
Ух ты!
Спасибо за помощь!
И все это добавить в новый словарь и передать в шаблон?
Офлайн
Не надо ничего в словарь добавлять. Передать в шаблон нужно только authors. В шаблоне почти тоже самое
{% for author in authors %}
{{author}}
{% for book in author.book_set.all %}
{{book}}
{% endfor %}
{% endfor %}
Офлайн