2017-03-22 11 views
0

現在、ユーザーに権限を与えるためにdjangoフォームを作成しようとしています。モデルには4つの権限があります:ビュー、更新、追加、削除。 各モデルに対して、管理者が特定のユーザの権限を選択できるチェックボックスシステムを用意したいとします。admin Webアプリケーションなしでユーザーに権限を与える方法

私はこの種のURLを使用しています:myapp/update/permissions/user/15 idが15のユーザーのアクセス許可を選択するページが表示されます。 シンプルにするため、「コメント」という1つのモデルがあるとします。このページでは、ユーザーがコメントを表示、更新、追加、削除できるかどうかを選択できます。もちろん、管理者は一度に複数のチェックボックスを選択することができ、ユーザーの権限は事前にチェックされています。

私はそれをどのように処理できるか知っていますか?

ありがとうございます! :)

PS:管理者用のアプリケーションでユーザーに権限を与えることは可能ですが、私はそれに対処するための自分のアプリを持っています。

+0

、独自の認証モデルを作成しますcan_update 'のようにフィールドを追加し、 can_delete ... '。要求に応じてユーザがcan_update、can_delete ...をチェックするデコレータを作成します。 –

+0

問題は、私はまだDjangoパーミッションを可能な限り組み込みシステムに使用したいということです。各ユーザーについて、フィールド 'users_permissions'を使用したいと思います。そして、私の異なるモデルから、私は 'Meta'フィールドにパーミッションを追加したいと思います。あなたが提案する方法では、モデルを追加する必要がありますが、私はすべてがすでに存在していると感じていますが、すべてを一緒に接着する必要があります。この場合別のアイデアはありますか?どうも! –

答えて

0

それぞれのチェックボックスを使用してテンプレートにフォームを作成することができ、ビュー内ではユーザー権限が更新されます。

詳細のチェックアウトのために

<form method='post'> 
    <label for="add">Can Add</label> 
    <input type="checkbox" name="add" id="add" /> 
    <label for="change">Can Change</label> 
    <input type="checkbox" name="change" id="change" /> 
    <label for="delete">Can Delete</label> 
    <input type="checkbox" name="delete" id="delete" /> 
</form> 

views.py

def form(request): 
    if request.method == "POST": 
     form = request.POST 
     if form.get('add'): 
      if not user.has_perm('myapp.add_comment'): 
       permission = Permission.objects.get(codename='add_bar') 
       request.user.user_permissions.add(permission) 
     if form.get('change'): 
      if not user.has_perm('myapp.change_comment'): 
       permission = Permission.objects.get(codename='change_bar') 
       request.user.user_permissions.add(permission) 
     if form.get('delete'): 
      if not user.has_perm('myapp.delete_comment'): 
       permission = Permission.objects.get(codename='delete_bar') 
       request.user.user_permissions.add(permission) 
return render(request, 'myapp/form.html', {}) 

form.html: https://docs.djangoproject.com/en/1.10/topics/auth/default/#permissions-and-authorization

+0

reply @ sachiv-paruchuriさんありがとうございます。私はこれを達成するあなたの方法が好きです。それは実際に私が持っていた最初のアイデアであり、実装を始めました。 しかし、特定の権限を付与するモデルがたくさんある場合は、手動で作業する必要があります。さらに、新しい権限が表示されると、それは一定の作業です。 これを自動化する方法はありますか?クエリーセットのようなもので?アプリに関連するすべての権限を取得し、自動的に表示するには? (多分何かをforms.pyで事前に作成することによって)? ありがとう! –

関連する問題