【问题标题】:Admins, users and groups in different organizations in DjangoDjango 中不同组织中的管理员、用户和组
【发布时间】:2018-02-09 07:29:02
【问题描述】:

我正在创建一个 Django 应用程序,目标是拥有多个用户的组织。所以在模型中,我有组织和用户,组织应该是独立的。

组织的第一个注册用户是管理员,下一个注册用户是员工。管理员可以创建用户组(usergroups/roles)来设置员工在应用内的权限。

Django 已经允许这样做,但是 Django 管理员可以编辑所有用户,对吧?有没有办法让一个组织的经理只能查看和编辑其员工的权限,而不能查看数据库中的所有用户?

【问题讨论】:

  • who could only see and edit its employees permissions and not see all the users in database 是什么意思?
  • 一个 Django 管理员可以查看所有用户并在 Django 管理页面中编辑他们的权限。我希望有几个不同的组织(用户组)和每个组织的管理员,他们只能查看该组织的用户并编辑他们的权限

标签: python django django-admin django-permissions


【解决方案1】:

您可以做的是在ModelAdmin 上覆盖您的get_queryset

class ClassAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(ClassAdmin, self).get_queryset(request)
        if your_condition:
            return qs.filter(b='bar')
        return qs.filter(b='foo')

当你注册你的班级到管理员时,别忘了admin.site.register(Class, ClassAdmin)

【讨论】:

  • 谢谢,这是个好技巧,有没有办法让一个全局超级管理员能够查看和编辑所有内容?
  • 是的,当然.. 在这种情况下,您可以添加条件if request.user.is_superuser: return qs.objects.all()
  • 好的,感谢您到目前为止的帮助,我的最后一个问题是是否可以同时限制显示现有权限的查询?我的意思是,我们将拥有允许用户管理组织的社交帐户的权限,因此我们只需要显示管理正在编辑的当前用户的组织的社交帐户的权限。我希望这很清楚
  • 我不太明白整个想法,但我认为您正在寻找的是使用权限来限制显示,是吗?或者你想在 Django 中使用内置的权限系统?
  • 好的,所以我想看看我是否可以使用 Django 中的内置权限来做我想做的事,我希望每个组织的管理员都能够编辑这个组织(你通过修改 Django 查询帮助我做到了),现在我希望组织的管理员只能看到这个组织的权限(权限将特定于每个组织),是否可以对每个组织进行个性化?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多