2016-11-03 2 views
0

내 사용자 모델에는 회사에서 구조 수준을 정의하는 필드가 있습니다. 내 목표는 각 사용자가 자신의 데이터와 그에 관련된 추가 데이터를 볼 수있게하는 것입니다.django에서 template_name을 사용자 데이터에 따라 ListView로 설정

나는 그룹이 내가 원하는 것을 얻는 데 도움이되는지 시도 할 수있는 권한을 설정했다. 하지만 권한 정말로 여기에만 다른 HTML로 리디렉션 점없는이 바로 서문 (내가 생각하는)

if request.user is ***** 

입니다 기능을 기본보기에

(I는 백 엔드에 로직을 처리하는) 내 문제가 클래스 기본보기에 있습니다.

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

클래스에서 사용자에게 어떻게 액세스 할 수 있습니까?

은 내가

self.request.user 인스턴스에서 사용자가 액세스 할 수 있습니다 알고 있지만 내가 어떻게이 일을 할 수

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 

아니면 인스턴스에서 TEMPLATE_NAME을 설정하는 방법이 있고 내 문제가 해결 됐어?

답변

0

클래스 기반 뷰에서 동적으로 수행하려는 모든 작업과 마찬가지로이 작업을 메서드에 넣어야합니다. 이 경우 정의 할 적절한 메소드는 get_template_names이며 튜플 또는 템플리트 이름 목록을 리턴해야합니다.

유일한 변경 사항은 user이 아닌 self.request.user을 참조해야한다는 것입니다.

+0

감사합니다. 그래서 self.request.user.xxx :의 구멍 논리가 내 덮어 쓰기로 들어갑니다. get_template_names? –

+0

OK 그것은 고맙습니다 !!! 귀하의 답변에 투표 한 결과, 새 사용자 (15 세 미만)가 얼마나 적습니까? 그래서 투표가 계산되지 않습니다. ( –

+0

아직 답을 수락 할 수 있습니다 (초록색 체크 표시를 클릭하십시오). –

관련 문제