gpt4 book ai didi

Django 将多个模型传递给一个模板

转载 作者:行者123 更新时间:2023-11-28 19:35:27 24 4
gpt4 key购买 nike

我正在构建一个地址簿,其中包括条目之间的关系等。我有个人、公司、地点和角色的单独模型。在我的索引页面上,我想列出每个模型的所有实例,然后过滤它们。这样一个人就可以轻松地搜索和找到条目。我已经能够使用通用 View 列出单个模型并使用 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

我还可以使用自定义 View 列出单个模型:

#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 解决)。

最佳答案

我最终修改了@thikonom 的答案以使用基于类的 View :

class IndexView(ListView):
context_object_name = 'home_list'
template_name = 'contacts/index.html'
queryset = Individual.objects.all()

def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['roles'] = Role.objects.all()
context['venue_list'] = Venue.objects.all()
context['festival_list'] = Festival.objects.all()
# And so on for more models
return context

在我的 urls.py 中

url(r'^$', 
IndexView.as_view(),
name="home_list"
),

关于Django 将多个模型传递给一个模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12187751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com