Django DetailView - 获取所有对象?

时间:2015-07-03 07:33:13

标签: django templates views

我有一个DetailView的子类来显示单个对象(obv)的详细信息。 我还有一个ListView的子类,它提供了主页(包含所有项目的一些信息)

但现在我想在我的基本模板中添加一个侧边栏,以便所有页面都有指向DetailView提供的每个视图的链接。

我如何以能够访问DetailView提供的模板中的所有对象的方式执行此操作?

2 个答案:

答案 0 :(得分:0)

class YourDetailView(DetailView):
    # ...

    def get_context_data(self, **kwargs):
        context = super(YourDetailView, self).get_context_data(**kwargs)
        context['all_objects'] = YourModel.objects.all()

        return context

https://docs.djangoproject.com/en/dev/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.get_context_data

答案 1 :(得分:0)

一些DRY方法:

  1. 让所有DetailView继承自使用get_context_data检索对象并将其添加到上下文的基础DetailView

  2. 撰写自定义template tag并在基本模板中使用