如何在Django模板中访问配置文件对象(配置文件ID)?

时间:2016-05-15 17:39:52

标签: python django django-templates

我有一个观点,我设置了允许我查看特定员工档案的所有培训:

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)

我遇到的问题是,我尝试使用个人资料ID而不是用户ID为特定员工个人资料添加更多培训。在我的training.html模板中,这个工作

training.html

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

但这不是(NoReverseMatch)

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

所以我的问题是,我需要做些什么来为特定的员工档案而不是用户添加培训?如何访问我当前在模板中使用的配置文件对象,以便profile.id可以正常工作?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法,我认为就是这样。如果有人有更好的解决方案,请告诉我。

我所做的是覆盖get_context_data以将配置文件ID返回给模板。

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

现在我可以使用:

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