请参阅Django中的View/Template中的多个模型

use*_*550 6 python django templates django-models

我正在使用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'
Run Code Online (Sandbox Code Playgroud)

urls.py:

url(r'^$', dashboard.views.ListDashboardView.as_view(),
    name='dashboard-list',),
Run Code Online (Sandbox Code Playgroud)

在dashboard.html中我做:

<ul>
  {% for contact in object_list %}
    <li class="contact">{{ contact }}</li>
  {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

任何人都可以向初学者解释如何在我的模板中访问多个模型吗?我不仅要展示我的"联系人"应用中的联系人,还要展示其他应用中的数据,例如我的"广告资源"应用和第三个应用.

我知道,我必须导入它:

from inventory.models import Asset
from polls.models import Poll
Run Code Online (Sandbox Code Playgroud)

但是要使用视图将所有这些数据传递给我的单个模板需要做些什么?我如何在模板中访问该数据?

解决方案可能是Django Pass Multiple Models到一个模板,但我必须承认我并不是真的理解它.

Aam*_*nan 11

您需要覆盖该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
Run Code Online (Sandbox Code Playgroud)