@@ -431,18 +431,31 @@ def get_user_members(self, workspace_id):
431431 .filter (workspace_id = workspace_id )
432432 .exclude (role__id = 'workspace_admin' )
433433 .select_related ('role' , 'user' ) # 预加载外键数据
434- .distinct ('user_id' )
435434 )
436- return [
437- {
438- 'id' : relation .user .id ,
439- 'nick_name' : relation .user .nick_name ,
440- 'email' : relation .user .email ,
441- 'role' : relation .role .name
442- }
443- for relation in user_role_relations
444- ]
445- return []
435+ user_dict = {}
436+ for relation in user_role_relations :
437+ user_id = relation .user .id
438+ if user_id not in user_dict :
439+ user_dict [user_id ] = {
440+ 'id' : user_id ,
441+ 'nick_name' : relation .user .nick_name ,
442+ 'email' : relation .user .email ,
443+ 'roles' : [relation .role .name ]
444+ }
445+ else :
446+ user_dict [user_id ]['roles' ].append (relation .role .name )
447+
448+ # 将字典值转换为列表形式
449+ return list (user_dict .values ())
450+ user_list = User .objects .exclude (role = RoleConstants .ADMIN .name )
451+ return [
452+ {
453+ 'id' : user .id ,
454+ 'nick_name' : user .nick_name ,
455+ 'email' : user .email ,
456+ 'roles' : [RoleConstants .USER .name ]
457+ } for user in user_list
458+ ]
446459
447460 class BatchDelete (serializers .Serializer ):
448461 ids = serializers .ListField (required = True , label = _ ('User IDs' ))
0 commit comments