我試圖將多個模型(外鍵)的數據顯示爲表格格式。在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 - 作者1
- 書1 - isbn1 - Author2
- 書2 - isbn2 - Author3
- 簿3 - isbn3 - 作者1
現在我可以使用各種過濾器查詢這兩個模型,並有相應的列表對象。如何在模板中使用較少的代碼顯示這兩個列表對象?
我可以想到的一種方法是遍歷這兩個列表,並創建一個與列的相應鍵的字典列表,並將此列表傳遞給模板。有沒有更好的方法呢?
目前代碼
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 2012-02-08 06:24:52
@Marcin當前的代碼發佈 – butters 2012-02-08 06:43:30