10

管理者でユーザーの削除を無効にしたいdjangoアプリがあります。アクションを無効にして、削除権限を false に設定しようとしました。しかし、どれも機能しませんでした。

from django.contrib.auth.models import User

class UserProfileAdmin(UserAdmin):
    actions = None

また

    def has_delete_permission(self, request):
        return False

また

    def get_actions(self, request):
        actions = super(UserProfileAdmin, self).get_actions(request)
        if 'delete_selected' in actions:
            del actions['delete_selected']
        return actions

admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)

しかし、UserAdmin を使用してユーザー情報にインラインを追加すると、正常に動作します。したがって、django admin でユーザーの削除を無効にする方法を提案してください。前もって感謝します。

4

2 に答える 2

20

オーバーライドModelAdmin.has_delete_permissionするとうまくいくはずです。呼び出し元の署名が正しくありません。objパラメーターがありません

class UserProfileAdmin(UserAdmin):
    def has_delete_permission(self, request, obj=None): # note the obj=None
        return False

さらに、return False管理者を含むすべてのスタッフが Django Admin のアイテムを削除できないようにするだけです。権限を微調整して、権限を削除して、User/Group削除したくないスタッフを防ぐことができます。User()delete_userprofiledelete_user

于 2012-09-18T15:31:05.323 に答える
-2

すべての管理者変更フォームの下部から [削除] ボタンを完全に削除することが目標である場合は、ファイルを変更することで削除できます.../django/contrib/admin/templatetags/admin_modify.py

特に、次の行を置き換えます。

    'show_delete_link': (not is_popup and context['has_delete_permission']
                          and (change or context['show_delete'])),

と:

    'show_delete_link': False,

また、管理者変更フォームの左下に [削除] ボタンを表示する必要はありません。

于 2012-09-18T14:40:44.793 に答える