我正在从MDN学习django。我在locallibrary工作。有一个问题。 我想只发送作者页上的书,但不是所有的书,只有当前页的作者书
如果url为
然后只发送了作者id为1的书,而不是全部
在AuthorDetailView中,我尝试了context['books']=Book.objects.filter(author\u exact=author.id)。 但它给了错误
**TypeError at /catalog/author/1**
**int() argument must be a string, a bytes-like object or a number, not 'DeferredAttribute'**
当我写上下文['books']=Book.objects.filter(author\u exact=1) 然后它在所有页面上只发送authord1的书。 在作者/2上
所以我想把authord2的书发到author/2上。关于作者的书。 但并不是所有关于每一页的书
在需要的时候发送所有对象是没有意义的
{% for book in books%}
{% if author.id is book.author.id %}
<li>
<a href="{{ book.get_absolute_url }}">{{ book.title }}</a> ({{book.author}})
</li>
{% endif %}
这段代码做我想做的,但通过发送所有对象。 我希望你明白我想要什么
这是我的模型,视图https://pastebin.com/yY6M5LUA
filter将向您发送一个queryset而不是一个objects,您需要做的是获得与需要相对应的对象,例如,
Book.objects.filter(author__exact=Author.id)[0]
将从queryset中获得第一个对象,因此您可以从这里获得对象您使用的是DetailView,因此上下文中已经有了当前作者。因此实际上没有理由在视图中执行任何操作—您可以删除
get_context_data
方法。相反,您可以遵循模板中的反向关系:相关问题 更多 >
编程相关推荐