2016-11-03 8 views
0

私のユーザモデルには、企業内で構造レベルを定義するフィールドがあります。 私の目標は、各ユーザーに自分のデータと彼の下のユーザーに関連する余分なデータを見せることです。djangoでtemplate_nameを設定するユーザデータに応じたリストビュー

私はグループが自分が望むものを手に入れることができるかどうか試してみる権限を設定しました。 しかし許可は、ここで実際には別のHTMLにリダイレクト ポイントではありませんが、これはまっすぐに序文(と思う)

if request.user is ***** 

ある機能の基本ビューに

(私はバックエンドのロジックを処理したい)私のこのようなクラスベースビューで問題が発生しています

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 

または多分インスタンスからテンプレート名を設定する方法があることができますし、私の問題は解決した?

答えて

0

クラスベースのビューで動的にやりたいことがあれば、これをメソッドに入れる必要があります。この場合、定義する適切なメソッドはget_template_namesであり、タプルまたはテンプレート名のリストを返す必要があります。

唯一の変更点は、userではなく、self.request.userを参照する必要があることです。

+0

ありがとう、 もしself.request.user.xxxのホールロジックが私の上書きに来るはずです get_template_names? –

+0

OKそれはうまくいきます!!!私の投票がカウントされないように、新しいユーザー(15歳以下)がどのようにあなたの答えを投票しましたか:( –

+0

あなたはまだ答えを受け入れることができます(緑色のチェックマークをクリックしてください)。 –

関連する問題