根据用户数据在django ListView上设置template_name

时间:2016-11-03 08:57:16

标签: django django-templates django-views

我的用户模型有一个字段,用于定义公司中的结构级别。 我的目标是让每个用户看到他的数据以及与他下面的用户相关的额外数据。

我已经设置了团体权限,试图看看它是否能帮助我获得我想要的东西。 但许可并不是真正的重点 只重定向到不同的html(我想在后端处理逻辑)

在功能基础视图中这是直接的前言(我认为)

class IndexHome(ListView):
    model = Task
    template_name = 'index.html'

我的问题是在类基本视图上这样

class IndexHome(ListView):
    user = request.user
    if user.department_director.all():
        department_director = list(user.department_director.all())
        template_name = 'index1.html'
    elif user.group_leader.all():
        group_leader = list(user.group_leader.all())
        template_name = 'index2.html'
    elif user.team_leader.all():
        team_leader = list(user.team_leader.all())
        template_name = 'index3.html'
    elif user.tech_leader.all():
        tech_leader = list(user.tech_leader.all())
        template_name = 'index4.html'
    else:
        template_name = 'index5.html'
    model = Task

我不确定如何在班级中访问用户?

我知道我可以从一个实例self.request.user

访问该用户

但我怎样才能做到这一点

ROW_NUMBER()

或者有可能从实例中设置template_name并解决了我的问题?

1 个答案:

答案 0 :(得分:0)

与在基于类的视图中要动态执行的任何操作一样,您需要将其放入方法中。在这种情况下,定义的适当方法是get_template_names,它需要返回一个元组或模板名称列表。

唯一的另一个变化是您需要引用self.request.user,而不仅仅是user