我有一个观点,我设置了允许我查看特定员工档案的所有培训:
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可以正常工作?
答案 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>