2016-07-11 6 views
0

У меня есть подробный вид с одной моделью номера, в get_context_data метода, который я добавить в мой контекст другого QuerySet объектов из второй модели: работникКак я могу получить список из контекста, в моем шаблоне Django

class RoomView(DetailView): 
    template_name = 'detail.html' 
    model = Room 
    context_object_name = "room" 

    def get_object(self): 
     object = super(RoomView, self).get_object() 
     if not self.request.user.is_authenticated(): 
      raise Http404 
     return object 

    def get_context_data(self, **kwargs): 
     context = super(RoomView, self).get_context_data(**kwargs) 
     context['workers'] = Worker.objects.all() 
     print context 
     return context 

Контекст выглядит следующим образом:

{'workers': [<Worker: Michael Shchur, Backend>, <Worker: Toto Kutunyo, Backend>], u'object': <Room: Backend, id=1>, 'room': <Room: Backend, id=1>, u'view': <map.views.RoomView object at 0x7f257811dc10>} 

Но я не могу доступ к этому добавлен список объектов с {{room.workers}} или

{% for worker in room.workers %} 
    <tr> 
     <td>{{worker.id}}</td> 
     <td>{{worker.first_name}}</td> 
     <td>{{worker.last_name}}</td> 
     <td>{{worker.email}}</td> 
    </tr> 
{% endfor %}. 

Прошу вас посоветовать, я могу это сделать.

ответ

0

Вы помещаете эту QuerySet в контексте с именем «рабочие», поэтому извлечь его из этого имени:

{% for worker in workers %} 
<tr> 
    <td>{{worker.id}}</td> 
    <td>{{worker.first_name}}</td> 
    <td>{{worker.last_name}}</td> 
    <td>{{worker.email}}</td> 
</tr> 
{% endfor %}. 
+0

Хорошо, это было быстро, и это работает. Большое спасибо. – kapitoshka

+0

проголосовали за мой большой палец, вы можете помочь мне с еще одним вопросом. Как я могу отфильтровать этих работников в этой get_context_data, чтобы они соответствовали подробному представлению комнаты о том, что я открываю? У рабочего есть поле с иностранным ключом из комнаты в модели. @Baterson – kapitoshka

+0

@kapitoshka вы не проголосовали :) просто положите ответ как разрешенный и большой палец вверх, вот как работает SO. О фильтре, всегда лучше задавайте новый вопрос, это также будет полезно для других парней. Но вы можете просто называть 'filter' queryset как this' room = self.get_object() ', затем' Worker.objects.filter (room = room) 'или помещать ваше имя для фильтрации, если' ForeighnKey' 'Room 'named different –