Найти - Пользователи
Полная версия: Выборка из базы ManyToMany
Начало » Django » Выборка из базы ManyToMany
1
pal201
Немного разобрался с моделью многие ко многим.
Однако остается вопрос. Если нам нужно получить всех авторов и все книги, которые они написали, как будет выглядеть запрос?
Как извлекать данные по фильтру в отношении многие ко многим более менее понятно.
Fibio
Всех авторов или какой-то определенный список авторов и книги которые они написали?
pal201
Спасибо за ответ.
К примеру: всех автором и все книги, который написал этот автор.
Что бы в шаблоне использовать выпадающий список к примеру.
Fibio
Все авторы: Author.objects.all()
книги автора по имени автора: Book.objects.filter(author='Pushkin')
книги автора по id автора: Book.objects.filter(author__id = 35)
pal201
спасибо за ответ. Однако не то что надо.
Author.objects.all() и как дальше для каждого автора все книги?
svas
Наверное так (смотря как у вас модели определены)
author.book_set.all()
pal201
То есть должно быть 2 цикла:
например так:
a=Author.objects.all()
b=Book.objects.all()
for i in a:
for x in b:
print….

Но тогда для каждого автора выберутся все книги из базы.
Или получать id автора и сопоставлять его с id в таблице книг.
svas
authors = Author.objects.all()
for a in authors:
print a
for b in a.book_set.all():
print '\t', b
pal201
Ух ты!
Спасибо за помощь!
И все это добавить в новый словарь и передать в шаблон?
svas
Не надо ничего в словарь добавлять. Передать в шаблон нужно только authors. В шаблоне почти тоже самое
{% for author in authors %}
{{author}}
{% for book in author.book_set.all %}
{{book}}
{% endfor %}
{% endfor %}
Вроде как-то так. Читайте документацию.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB