2016-05-15 7 views
0

Ich habe eine Ansicht, die ich einrichten, die mich die ganze Ausbildung für einen bestimmten Mitarbeiter Profil anzeigen können:Wie Profil-Objekt (Profil-ID) in Django Vorlage zugreifen?

class ManageTrainingView(LoginRequiredMixin, generic.ListView): 
    login_url = reverse_lazy('users:login') 
    model = Training 
    template_name = 'ppm/training.html' 
    paginate_by = 10 

    # Get training queryset for specific profile id 
    def get_queryset(self): 
     pk = self.kwargs['pk'] 
     return Training.objects.filter(profile_id=pk) 

Das Problem Ich habe ist, dass ich mehr Ausbildung hinzuzufügen für eine bestimmte ich versucht, Mitarbeiterprofil mit einer Profil-ID anstelle einer Benutzer-ID. In meinem training.html Vorlage Dies funktioniert

training.html

<li><a href="{% url 'ppm:add-training' user.id %}">Add Training</a></li> 

Aber dies nicht (NoReverseMatch)

<li><a href="{% url 'ppm:add-training' profile.id %}">Add Training</a></li> 

So ist meine Frage, was muss ich tun, um zu Training für ein bestimmtes Mitarbeiterprofil statt für einen Benutzer hinzufügen? Wie greife ich auf das Profilobjekt zu, in dem ich gerade in der Vorlage bin, damit profile.id funktioniert?

Antwort

0

Ich habe eine Lösung für mein Problem gefunden und ich denke, das ist es. Wenn jemand eine bessere Lösung hat, lass es mich wissen.

Ich habe get_context_data überschrieben, um die Profil-ID an die Vorlage zurückzugeben.

def get_context_data(self, **kwargs): 
    pk = self.kwargs['pk'] 
    context = super(ManageTrainingView, self).get_context_data(**kwargs) 
    context['profile_id'] = pk 
    return context 

Jetzt bin ich in der Lage zu verwenden:

<li><a href="{% url 'ppm:add-training' profile_id %}">Add Training</a></li>