2016-07-11 10 views
0

ich eine Detailansicht mit einem Modell Raum haben, in get_context_data Methode, die ich zu meinem Kontext eine andere queryset von Objekten aus dem zweiten Modell hinzu:Wie kann ich eine Liste von Kontext in meiner django Vorlage abrufen

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 

Worker Context wie folgt aussieht:

{'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>} 

Aber ich `t Zugriff auf diese Liste von Objekten mit zugesetztem {{room.workers}} oder

{% 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 %}. 

Bitte um Rat mich kann ich es tun.

Antwort

0

Sie setzen diese queryset in Zusammenhang mit dem Namen ‚Arbeitnehmer‘, so rufen Sie sie aus diesem Namen:

{% 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

Ok, das war schnell und es funktioniert. Danke vielmals. – kapitoshka

+0

mit meinem Daumen abgestimmt, können Sie mir mit einer weiteren Frage helfen. Wie kann ich diese Worker in diesem get_context_data filtern, damit sie der Raumdetailansicht meiner geöffneten Seite entsprechen? Arbeiter hat ein Fremdschlüsselfeld von Room in model. @Baterson – kapitoshka

+0

@kapitoshka Sie nicht woted :) nur die Antwort als gelöst und Daumen nach oben, so funktioniert SO. Über Filter, immer besser eine neue Frage stellen, es wird auch hilfreich für andere Leute. Aber Sie können 'filter' von queryset einfach wie folgt aufrufen:' room = self.get_object() ', dann' Worker.objects.filter (room = room) ', oder setzen Sie Ihren Namen auf den Filter, wenn' Foreighnkey' auf 'Room 'benannt anders –