Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将对象级权限添加到其他应用程序的管理界面(例如auth)_Django_Django Admin - Fatal编程技术网

Django 将对象级权限添加到其他应用程序的管理界面(例如auth)

Django 将对象级权限添加到其他应用程序的管理界面(例如auth),django,django-admin,Django,Django Admin,我使用django guardian获得对象级权限。如何将其集成到自己的代码中的文档很好: 但我如何才能将其添加到其他应用程序的模型中?我不想修改例如django.contrib.auth的代码。我在django reversion的源代码中找到了一个解决方案。有一个名为patch\u admin()的助手。以下是为django guardian修改的代码片段 # Copy of django-reversion helpers.py def patch_admin(model, admin_

我使用django guardian获得对象级权限。如何将其集成到自己的代码中的文档很好:


但我如何才能将其添加到其他应用程序的模型中?我不想修改例如django.contrib.auth的代码。

我在django reversion的源代码中找到了一个解决方案。有一个名为
patch\u admin()
的助手。以下是为django guardian修改的代码片段

# Copy of django-reversion helpers.py
def patch_admin(model, admin_site=None):
    """
    Enables version control with full admin integration for a model that has
    already been registered with the django admin site.

    This is excellent for adding version control to existing Django contrib
    applications. 
    """
    admin_site = admin_site or admin.site
    try:
        ModelAdmin = admin_site._registry[model].__class__
    except KeyError:
        raise NotRegistered, "The model %r has not been registered with the admin site." % model
    # Unregister existing admin class.
    admin_site.unregister(model)
    # Register patched admin class.
    class PatchedModelAdmin(GuardedModelAdmin, VersionAdmin, ModelAdmin): # Remove VersionAdmin, if you don't use reversion.
        pass
    admin_site.register(model, PatchedModelAdmin)

from django.contrib.auth.models import Group
patch_admin(Group)

我在django reversion的源代码中找到了一个解决方案。有一个名为
patch\u admin()
的助手。以下是为django guardian修改的代码片段

# Copy of django-reversion helpers.py
def patch_admin(model, admin_site=None):
    """
    Enables version control with full admin integration for a model that has
    already been registered with the django admin site.

    This is excellent for adding version control to existing Django contrib
    applications. 
    """
    admin_site = admin_site or admin.site
    try:
        ModelAdmin = admin_site._registry[model].__class__
    except KeyError:
        raise NotRegistered, "The model %r has not been registered with the admin site." % model
    # Unregister existing admin class.
    admin_site.unregister(model)
    # Register patched admin class.
    class PatchedModelAdmin(GuardedModelAdmin, VersionAdmin, ModelAdmin): # Remove VersionAdmin, if you don't use reversion.
        pass
    admin_site.register(model, PatchedModelAdmin)

from django.contrib.auth.models import Group
patch_admin(Group)