我正在使用Python / Django完成我的第一步,并在一个Django项目中编写了一个带有多个Django应用程序的示例应用程序。现在我添加了另一个名为“dashboard”的应用程序,我想显示来自不同应用程序的数据。目前我仍然使用这个简单的基于类的通用视图,它在仪表板上显示我的小联系人-App的条目:
views.py:
from django.views.generic import ListView
from contacts.models import Contact
class ListDashboardView(ListView):
model = Contact
template_name = 'dashboard.html'
urls.py:
url(r'^$', dashboard.views.ListDashboardView.as_view(),
name='dashboard-list',),
在dashboard.html中,我这样做:
<ul>
{% for contact in object_list %}
<li class="contact">{{ contact }}</li>
{% endfor %}
</ul>
有人可以向初学者解释如何在我的模板中访问多个模型吗?我不仅要展示我的“联系人”应用中的联系人,还要展示其他应用中的数据,例如我的“广告资源”应用和第三个应用。
我知道,我必须导入它:
from inventory.models import Asset
from polls.models import Poll
但是要使用视图将所有这些数据传递给我的单个模板需要做些什么?我如何在模板中访问该数据?
解决方案可能在Django Pass Multiple Models to one Template,但我必须承认我并不理解它。
答案 0 :(得分:10)
您需要覆盖get_context_data
方法并在上下文中传递您想要的任何内容:
class ListDashboardView(ListView):
model = Contact
template_name = 'dashboard.html'
def get_context_data(self, **kwargs):
ctx = super(ListDashboardView, self).get_context_data(**kwargs)
ctx['polls'] = Poll.objects.all()
return ctx
答案 1 :(得分:0)
添加到Aamir的答案
你会做的HTML中的:
{% for contact in object_list %}
<li>{{contact.object}}</li>
{% endfor %}
引用“联系人”模型对象
和
{% for x in polls %}
<li>{{ x.object }}</li>
{% endfor %}
引用“民意调查”模型对象
(起初这对我来说并不直观)。