4

django adminでモデルを条件付きで登録または登録解除することは可能ですか? リクエストがいくつかの条件を満たす場合にのみ、いくつかのモデルをdjango adminに表示したい。私の特定のケースでは、ログインしているユーザーが特定のグループに属しているかどうかを確認するだけでよく、ユーザーが (スーパーユーザーであっても) グループに属していない場合はモデルを表示しません。アクセス許可を使用してスーパーユーザーを除外することはできないため、ここではアクセス許可を使用できません。または、モデルのスーパーユーザーからでも許可を取り消す方法はありますか。

4

2 に答える 2

7

モデルに対する権限は、 で動的に管理できますModelAdminhas_add-permissionメソッド、has_change_permissionおよび をオーバーライドしますhas_delete_permission

class MyModelAdmin(admin.ModelAdmin):
    def has_add_permission(self,request):
        # if request satisfies conditions:
        #   return True
        #else:
        #   return False

他の 2 つの方法についても同様です。これはsuperusers でも機能します。3 つの権限をすべて取り消すMyModelと、管理サイトに表示されなくなります。

管理サイトからエントリを非表示にするだけの場合はmodel、単にメソッドをオーバーライドします get_model_perms。アクセス許可メソッドをオーバーライドする必要はありません。

def get_model_perms(self, request):
    return {}

ただし、このメソッドは から権限を取り消しませんmodel。モデルが管理サイトに掲載されていなくても、URLを入力することでアクセスできます。

于 2015-02-26T03:47:52.600 に答える