新手 - 了解Django基于类的视图动态过滤

时间:2017-03-02 11:14:25

标签: python django django-class-based-views

我正在尝试从文档中学习Django中的动态过滤。 https://docs.djangoproject.com/en/1.10/topics/class-based-views/generic-display/#dynamic-filtering 我一直在一步一步地从文档中复制/粘贴代码。但我不明白关于将发布者添加到上下文中的最后一点,这意味着我无法弄清楚如何在模板中查询该数据。我唯一可以“抓住”出版商。

因为在PublisherDetail视图中publisher_detail.html您可以直接做这样的事情,列出发布商的所有图书:

{% for book in book_list %}
    {{ book.title }}
{% endfor %}

这是绊倒我的一部分。

  

我们也可以同时将发布者添加到上下文中,所以我们   可以在模板中使用它:

# ...

def get_context_data(self, **kwargs):
    # Call the base implementation first to get a context
    context = super(PublisherBookList, self).get_context_data(**kwargs)
    # Add in the publisher
    context['publisher'] = self.publisher
    return context

2 个答案:

答案 0 :(得分:1)

context['publisher'] = self.publisher中设置get_context_data表示您可以在上下文中显示发布商的详细信息。例如,您可以在书名列表上方显示出版商的名称:

<h2>Books published by {{ publisher.name }}</h2>

{% for book in book_list %}
    {{ book.title }}
{% endfor %}

答案 1 :(得分:0)

您可以按照此处所述访问相关对象:What is `related_name` used for in Django?

尝试拨打publisher.books.all()publisher.book_set.all()

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