Django权限隐藏“auth | permission”

时间:2014-12-03 13:58:52

标签: python django permissions admin

我有一个Django app 1.7并且我们在auth app中设置了一些权限(默认情况下存在),因为这些权限没有绑定到我们的任何应用程序,它们出现在管理员权限列表中,如下所示:

auth|permission|<mypermissionname>

在另一个层面上,我们获得了与我们的应用程序绑定的权限。模型所以他们看起来像这样:

<myapp>|<mymodule>|<mypermissionname>

有没有办法对齐两者?最好的情况是从这些权限中删除“auth | permission”部分?它们不必在数据库中重命名,只是用于化妆品。

1 个答案:

答案 0 :(得分:0)

class MyUserAdmin(UserAdmin):
    def formfield_for_manytomany(self, db_field, request=None, **kwargs):
        field = super(MyUserAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)

        if db_field.name == 'user_permissions':
            perms = []
            for p in Permission.objectds.all():
                if not str(p).startswith('auth'):
                    perms.append(p.name)
            field.queryset = field.queryset.filter(name__in=perms)

        return field

然后:

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