【问题标题】:Django permission hide "auth|permission"Django 权限隐藏“auth|permission”
【发布时间】:2014-12-03 13:58:52
【问题描述】:

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

auth|permission|<mypermissionname>

在另一个层面上,我们拥有绑定到我们的应用和模型的权限,因此它们看起来像这样:

<myapp>|<mymodule>|<mypermissionname>

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

【问题讨论】:

    标签: python django permissions admin


    【解决方案1】:
    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)
    

    【讨论】:

      猜你喜欢
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2015-07-12
      • 2022-10-15
      • 1970-01-01
      相关资源
      最近更新 更多