Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅向模板发送当前页面对象(django)_Python_Django_Django Models_Detailsview - Fatal编程技术网

Python 仅向模板发送当前页面对象(django)

Python 仅向模板发送当前页面对象(django),python,django,django-models,detailsview,Python,Django,Django Models,Detailsview,我正在从MDN学习django。我在本地图书馆工作。我遇到了一个问题。 我只想发送作者页面上的书籍,但不想发送所有书籍,只发送当前页面上的作者书籍 如果url是 /作者/1 然后只发送了作者id为1的书,而不是全部 在AuthorDetailView中,我尝试了上下文['books']=Book.objects.filter(author\uu exact=author.id)。 但它给出了错误 **TypeError at /catalog/author/1** **int() argume

我正在从MDN学习django。我在本地图书馆工作。我遇到了一个问题。 我只想发送作者页面上的书籍,但不想发送所有书籍,只发送当前页面上的作者书籍

如果url是

/作者/1 然后只发送了作者id为1的书,而不是全部

AuthorDetailView中,我尝试了上下文['books']=Book.objects.filter(author\uu 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\uu exact=1) 然后它只在所有页面上发送Authorid1的书。 关于作者/2

所以我想把Authorid2的书发到author/2。3关于作者的书/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 %}
{%forbook-in-books%}
{%如果author.id是book.author.id%}
  • ({{book.author}})
  • {%endif%}
    这段代码实现了我想要的功能,但是发送了所有对象。 我希望你明白我想要什么


    这是我的模型,视图过滤器将向您发送查询集而不是对象,您需要做的是获取与需求相对应的对象,例如,
    Book.objects.filter(author\uu exact=author.id)[0]
    将从查询集中获取第一个对象,因此您可以从这里获取对象。

    您使用的是详细视图,因此,您已经在上下文中找到了当前作者。因此,实际上没有理由在视图中执行任何操作-您可以删除
    get\u context\u data
    方法。相反,您可以遵循模板中的反向关系:

    {% for book in author.book_set.all %}
      {{ book.title }}
    {% endfor %}
    

    如果这是一个问题,那么传递常量
    1
    是如何工作的?在
    Author.id
    上进行筛选是没有意义的。哪个作者?@DanielRoseman是的,那个作者应该是当前页面的pk,所以应该有author\uu exact=pkofauthorofccurrentpage,但我不知道如何在这个视图中获取当前页面的详细信息,我认为这太混乱了,你需要显示视图的其余部分和URL。