首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将对象级权限添加到其他应用的管理界面(例如身份验证)

将对象级权限添加到其他应用的管理界面(例如身份验证)
EN

Stack Overflow用户
提问于 2012-04-19 20:12:57
回答 1查看 368关注 0票数 1

对于对象级权限,我使用django-guardian。如何将其集成到自己的代码中的文档很好:http://packages.python.org/django-guardian/userguide/admin-integration.html

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-19 22:09:45

我在django-reversion的源代码中找到了一个解决方案。有一个名为patch_admin()的帮助器。这是为django-guardian修改的代码片段。

代码语言:javascript
复制
# 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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10227787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档