创建Django“ Sub Admin”以访问其公司用户的数据

时间:2019-02-25 10:38:35

标签: django

我正在构建可以由多家公司使用的Django应用。现在,我设置了common(super)admin,它可以查看每个用户和模型。我将所有公司详细信息存储在公司表中。

假设我们有3个公司-A,B和C。我想为每个公司创建3个子管理员,他们只能查看/编辑仅与公司用户相关的所有数据。

我已经尝试过的操作:我根据模型创建了权限,但是它们并没有解决从唯一一家公司访问数据的目的。

有人可以向我解释如何实现这一目标吗?可以通过编程方式或通过管理门户进行。

技术规格

  • Django 2.1

  • Python 3.6.4

PS::如果您需要更多信息,请告诉我。我将提供尽可能多的信息。谢谢。

1 个答案:

答案 0 :(得分:1)

如果确定要使用Django Admin,则可以覆盖每个ModelAdmin的{​​{1}}函数,以仅显示与当前登录的用户公司有关的记录。例如:

get_queryset()

请注意,这取决于您的用户具有class MyModelAdmin(admin.ModelAdmin): def get_queryset(self, request): qs = super().get_queryset(request) return qs.filter(company=request.user.company) 属性,并且您必须将其应用于company类的每个实例。

官方文档https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset中也对此进行了描述。