См. Несколько моделей в представлении / шаблоне в 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 %} 

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

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

  • Аргументы Python и примеры ключевых слов-аргументов
  • Контроль формы в Django ForeignKey
  • MySQL INSERT ... ON DUPLICATE KEY UPDATE с django 1.4 для объемной вставки
  • HTML не рендеринг в текстовом поле Django
  • Как вы динамически скрываете поля формы в Django?
  • Создание суперпользователя Django в PyCharm
  • Безопасность потоков с помощью шаблонов
  • Учебник Django - Исправлено неподтвержденное исключение (pytz не установлен)
  • Django сортировать по расстоянию
  • simplejson возвращает значения не в порядке
  • Доступ к моделям django внутри Scrapy
  • Python - лучший язык программирования в мире.