2017-11-08 6 views
1

この特定のユーザーによって作成されたオブジェクトの編集のみを許可することによって、管理者権限へのユーザーアクセスをDjangoに与える方法はありますか?このユーザーが作成したオブジェクトのみをユーザーが変更できるようにします

たとえば、他のユーザーを作成する権限をユーザーに与えたいが、この権限を持つ管理者または他のユーザーによって作成されたユーザーを変更できないようにしたい。

私はdjango-adminを使用していますので、質問はそれに関連しています。

答えて

1

ModelAdminクラスのhas_change_permissionhas_delete_permissionメソッドをオーバーライドする必要があります。例えば

class MyModelAdmin(admin.ModelAdmin): 

    def has_change_permission(self, request, obj=None): 
     if obj is not None and obj.created_by != request.user: 
      return False 
     return True 

    def has_delete_permission(self, request, obj=None): 
     if obj is not None and obj.created_by != request.user: 
      return False 
     return True 
+0

だから、あなたがフィールド 'created_by'を作成することをお勧めですか? – UpmostScarab

+0

どのユーザーがどのオブジェクトを作成したかを追跡する方法が必要です。 'User'テーブルへの' ForeignKey'はおそらく最も簡単な解決策です。 –

+0

はい、それは実際には明らかな方法です。しかし、作者がデフォルトでは追跡されないことは確かですか? – UpmostScarab

関連する問題