2017-08-31 133 views
0

我正在创建一个Django应用程序,其目标用于具有多个用户的组织。所以在模型中,我有组织和用户,组织应该是独立的。Django中不同组织中的管理员,用户和组

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

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

+1

你是什么意思的'谁只能查看并编辑其员工权限并且看不到数据库中的所有用户? – aircraft

+0

Django管理员可以查看所有用户并在Django管理页面中编辑他们的权限。我想有几个不同的组织(用户组)和每个组织的管理员只能看到该组织的用户并编辑他们的权限 –

回答

1

你可以做的是重写你的get_querysetModelAdmin

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)

+0

谢谢,这是一个很好的窍门,并且会有一种方法可以保持一个全局超级管理员能够查看和编辑一切? –

+1

是的,绝对..在这种情况下,你可以添加一个条件''if request.user.is_superuser:''return''qs.objects.all()'' – bobleujr

+0

好的,谢谢你的帮助到目前为止,我的最后一个问题是是否有可能也限制显示现有权限的查询?我的意思是,我们有权限允许用户管理组织的社交帐户,所以我们只需要显示管理正在编辑的当前用户的组织的社交帐户的权限。我希望这是明确的 –