我必须创建一个API来在租户中检索超级管理员:
我的网址是:
path('tenant/<slug:pk>/superadmin/<slug:superadmin>/', SuperAdminRUDView.as_view(), name='tenant-superadmin'),
我成功列出了所有超级管理员。但是,要创建一个RUD视图,它将有两个合并字段:
我的观点:
class SuperAdminRUDView(GetSuperAdminsMixin, generics.RetrieveUpdateDestroyAPIView):
serializer_class = SuperAdminSerializer
permission_classes = [CreateSuperAdminPermission]
GetSuperAdminsMixin只是一个用于返回查询集的混合方法。如何管理此多重查找字段。superadmin的检索应基于slug:superadmin给出的id
class GetSuperAdmins(object):
def get_queryset(self):
users = ElsUser.objects.filter(tenant=self.kwargs['pk'])
super_admin_users = []
user_roles = []
role_names = []
for user in users:
role_names = []
user_roles = RoleHelper(user.id).get_user_default_roles()
roles = PMRole.objects.filter(id__in=user_roles)
for role in roles:
role_names.append(role.short_name)
if "tenant_system_admin" in role_names:
super_admin_users.append(user)
return super_admin_users