如何从DetailsView模板中的另一个模型中提取信息(没有ForeignKey)?

时间:2018-02-13 18:22:34

标签: django django-models django-templates django-views

我试图从DetailsView模板中的两个模型中提取数据(在Django中)。当然存在与视图相关联的主要模型(例如,文章),其易于访问。但是,我想从模型中访问数据(例如条款)。我不想使用ForeignKey,因为我会使用很多条款'在每篇文章中,'而且由于ForeignKey允许我只链接到条款模型中的行,我将不得不设置多个ForeignKey字段,这可能会很快乱。

我在想这可以使用get_context_data或templatetags完成,但还没有运气。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Django Documentation,您可以添加您希望在模板上下文中调用的任何查询集或上下文值,如下面的book_list将列出所有图书,并且不必与任何其他图书相关联模型..

#views.py
class PublisherDetail(DetailView):

    model = Publisher

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(PublisherDetail, self).get_context_data(**kwargs)
        # Add in a QuerySet of all the books
        context['book_list'] = Book.objects.all()
        return context

#yourtemplate.html
{% for book in book_list %}
    {% if book %}
        {{ book.title }}
    {% endif %}
    {% empty %}
       No book_list found.
{% endfor %}