2017-06-19 83 views
0

我有這個簡單的模型:傳遞對象包括模板

class Book(models.Model): 
    title = models.CharField(max_length=100) 
    description = models.TextField(max_length=1500) 
    page_count = models.PositiveSmallIntegerField() 
    author = models.CharField(max_length=50) 

我想使這個模型對象(傳遞給模板book_copies)的列表。

我(簡體)模板:

# 'books/list.html' 
<div> 
    {% for copy in book_copies %} 
     {% include 'books/book.html' with book=copy only %} 
    {% endfor %} 
</div> 

# 'books/book.html' 
<p> 
    {{ book.title }} - {{ book.author }} 
</p> 

看來,模板變量copy傳遞到包括模板Book模型的str表示。因此,我無法訪問其字段,例如titleauthor

是否可以傳遞模型對象而不轉換爲包含模板?

+0

這是不對的,應該傳遞的對象是。你確定'book_copies'實際上是一個實例列表嗎?你能說明你是如何得到它的嗎? –

+0

'context ['book_copies'] = Book.objects.all()' – Nuurek

回答

1
<div> 
    {% for copy in book_copies %} 
     {% include 'books/book.html' with author=copy.author title=copy.title only %} 
    {% endfor %} 
</div> 

你不能傳遞這樣一個對象,但你可以試試這個

+0

我只是不想一個一個地傳遞所有字段,並想知道是否存在另一種方法。謝謝:) – Nuurek

+0

是啊我可以理解你的問題,但不幸的是沒有什麼可以傳遞整個對象 – Exprator

+0

@Nuurek有自定義包含標籤https://docs.djangoproject.com/zh/1/11/howto/custom-模板標籤/#包含標籤這裏是示例https://stackoverflow.com/a/44627440/3627387 –