Я пытаюсь отобразить данные из нескольких моделей (внешний ключ) в виде табличного формата.Список данных из нескольких моделей в плоской таблице в Django
class Author(models.Model):
name = models.CharField(max_length=250)
class Book(models.Model):
title = models.CharField(max_length=250)
isbn = models.CharField(max_length=250)
author = models.ManyToManyField(Author)
Ожидаемый результат:
- Книга 1 - isbn1 - Author1
- Книга 1 - isbn1 - Author2
- Книга 2 - isbn2 - Author3
- Книга 3 - isbn3 - Автор1
Теперь я могу запросить две модели с использованием различных фильтров и иметь соответствующие объекты списка. Как я могу отобразить эти два объекта списка в шаблоне с меньшим количеством кода?
Один из способов, которым я могу думать, - это перебрать эти два списка и создать список dict с соответствующими ключами для столбцов и передать этот список в шаблон. Есть ли лучший подход к этому?
Текущий код
def getresult(params):
print "printing dict ", params
titles = params.getlist('titles')
authors_input = params.getlist('authors')
...
books = Book.objects.all()
if len(title) > 0 :
books = books.objects.filter(title__in = titles)
...
authors = Authors.objects.filter(name__in=books)
if len(authors_input) > 0 :
authors = authors.filter(name__in = authors_input)
result = []
for book in books:
authors = authors.filter(name=book.author)
for author in authors:
output_item = {}
output_item['book_name'] = book.title
output_item['isbn'] = book.isbn
output_item['author'] = author.name
result.append(output_item)
return result
Покажите нам ваш текущий код. – Marcin
@ Марцин текущий код – butters