我正在构建可以由多家公司使用的Django应用。现在,我设置了common(super)admin,它可以查看每个用户和模型。我将所有公司详细信息存储在公司表中。
假设我们有3个公司-A,B和C。我想为每个公司创建3个子管理员,他们只能查看/编辑仅与公司用户相关的所有数据。
我已经尝试过的操作:我根据模型创建了权限,但是它们并没有解决从唯一一家公司访问数据的目的。
有人可以向我解释如何实现这一目标吗?可以通过编程方式或通过管理门户进行。
技术规格:
Django 2.1
Python 3.6.4
PS::如果您需要更多信息,请告诉我。我将提供尽可能多的信息。谢谢。
答案 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中也对此进行了描述。