我正在构建一个地址簿,其中包含条目之间的关系等。我为个人、公司、地点和角色设置了单独的模型。在我的索引页面上,我想列出每个模型的所有实例,然后过滤它们。这样人们就可以轻松搜索并找到条目。我已经能够使用通用视图列出一个模型并使用 get_extra_context 来显示另一个模型:
#views.py
class IndividualListView(ListView):
context_object_name = "individual_list"
queryset = Individual.objects.all()
template_name='contacts/individuals/individual_list.html'
class IndividualDetailView(DetailView):
context_object_name = 'individual_detail'
queryset = Individual.objects.all()
template_name='contacts/individuals/individual_details.html'
def get_context_data(self, **kwargs):
context = super(IndividualDetailView, self).get_context_data(**kwargs)
context['role'] = Role.objects.all()
return context
我还可以使用自定义视图列出单个模型:
#views.py
def object_list(request, model):
obj_list = model.objects.all()
template_name = 'contacts/index.html'
return render_to_response(template_name, {'object_list': obj_list})
以下是这两个测试的 urls.py:
(r'^$', views.object_list, {'model' : models.Individual}),
(r'^individuals/$',
IndividualListView.as_view(),
),
(r'^individuals/(?P<pk>\d+)/$',
IndividualDetailView.as_view(),
),
所以我的问题是“如何修改它以将多个模型传递给模板?” 甚至可能吗?StackOverflow 上的所有类似问题只询问两个模型(可以使用 get_extra_context 解决)。