См. Несколько моделей в представлении / шаблоне в Django

Я делаю первые шаги с Python / Django и написал пример приложения с несколькими приложениями Django в одном проекте Django. Теперь я добавил еще одно приложение под названием «панель мониторинга», где я хотел бы отображать данные из разных приложений. На данный момент я все еще использую это простое обобщенное представление на основе классов, которое показывает записи моих маленьких контактов-приложений на панели инструментов:

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 для одного шаблона, но я должен признаться, что на самом деле я его не понимаю.

2 Solutions collect form web for “См. Несколько моделей в представлении / шаблоне в Django”

Вам необходимо переопределить метод 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 

Чтобы добавить к ответу Аамира

в html вы бы сделали:

 {% for contact in object_list %} <li>{{contact.object}}</li> {% endfor %} 

ссылаться на объекты модели «контакт»

а также

 {% for x in polls %} <li>{{ x.object }}</li> {% endfor %} 

ссылаться на объекты модели «опросы»

(сначала это было неинтуитивно для меня).

Interesting Posts
Python - лучший язык программирования в мире.