在通用视图中加载一些模型,打破概念?

时间:2013-07-01 11:29:41

标签: django django-generic-views

首先,我是Django世界的初学者,所以也许我想做的事情是疯狂的,或者是对概念的误解,所以我们走了:

我们如何看待,通用视图为我们在模板中一直使用的常见模式节省了大量时间,其中之一是根据集合检索模型列表的ListView属性

 from models import Post
 from django.views.generic import ListView, DetailView 


    class PostListView(ListView):
        model = Post
        template_name = 'blog/post_list.html'

我们绑定我们的Post模型,将ListView设置为post_list.html作为我们的模板,但是......在我们的模板中,我们需要显示多个模型时会发生什么?想象一下这个展示了一个帖子列表,但我们想在这个模板中显示另一个列表,为此我们可以用通用视图做到这一点?或者我们必须像往常那样做?

1 个答案:

答案 0 :(得分:2)

您可以向传递给模板的上下文添加其他信息,例如另一个不相关模型列表。 Django documentation显示了以下示例:

from django.views.generic import DetailView
from books.models import Publisher, Book

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