【发布时间】:2019-10-22 06:06:37
【问题描述】:
我正在从 MDN 学习 django。我正在研究 locallibrary。我遇到了一个问题。 我只想发送作者页面上的书籍,而不是所有书籍,只发送当前页面的作者书籍。
如果网址是
/作者/1
然后只发送作者 ID 为 1 的书,而不是全部
在 AuthorDetailView 中,我尝试了 context['books']=Book.objects.filter(author__exact=Author.id)。 但它给出了错误
**TypeError at /catalog/author/1**
**int() argument must be a string, a bytes-like object or a number, not 'DeferredAttribute'**
当我写 context['books']=Book.objects.filter(author__exact=1) 然后它只在所有页面上发送 authorid 1 的书。 关于作者/2。
所以我想在 author/2 上发送 authorid 2 的书。 3 关于author/3 的书。 但并非所有书籍都在每一页上。
在需要的时候发送所有对象是没有意义的。
{% 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
【问题讨论】:
-
过滤
Author.id没有意义。哪个作者? -
@DanielRoseman 是的,那个作者应该是当前页面的 pk,所以应该有 author__exact = pkOfAuthorOfCurrentPage 但我不知道如何在这个视图中获取当前页面的详细信息,我认为这很混乱跨度>
-
您需要显示视图的其余部分和 URL。
标签: python django django-models detailsview