2017-06-19 51 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 –