File tree Expand file tree Collapse file tree 2 files changed +10
-13
lines changed
Expand file tree Collapse file tree 2 files changed +10
-13
lines changed Original file line number Diff line number Diff line change @@ -55,15 +55,12 @@ def get_incorrect_solves(self, instance):
5555
5656
5757class ListTeamSerializer (serializers .ModelSerializer ):
58- members = serializers .SerializerMethodField ( )
58+ members = serializers .IntegerField ( read_only = True , source = "members_count" )
5959
6060 class Meta :
6161 model = Team
6262 fields = ["id" , "name" , "members" ]
6363
64- def get_members (self , instance ):
65- return instance .members .count ()
66-
6764
6865class AdminTeamSerializer (IncorrectSolvesMixin , serializers .ModelSerializer ):
6966 members = MinimalMemberSerializer (many = True , read_only = True )
Original file line number Diff line number Diff line change 11from django .http import Http404
2+ from django .db .models import Count
23from rest_framework import filters
34from rest_framework .generics import (
45 CreateAPIView ,
@@ -69,29 +70,28 @@ class TeamViewSet(AdminListModelViewSet):
6970 def get_queryset (self ):
7071 if self .action == "list" :
7172 if self .request .user .is_staff :
72- return Team .objects .order_by ("id" ).prefetch_related ("members" )
73- return Team .objects .filter (is_visible = True ).order_by ("id" ).prefetch_related ("members" )
74- if self .request .user .is_staff and not self .request .user .should_deny_admin ():
75- return Team .objects .order_by ("id" ).prefetch_related (
73+ qs = Team .objects .order_by ("id" ).prefetch_related ("members" )
74+ else :
75+ qs = Team .objects .filter (is_visible = True ).order_by ("id" ).prefetch_related ("members" )
76+ elif self .request .user .is_staff and not self .request .user .should_deny_admin ():
77+ qs = Team .objects .order_by ("id" ).prefetch_related (
7678 "solves" ,
7779 "members" ,
7880 "hints_used" ,
7981 "solves__challenge" ,
8082 "solves__score" ,
8183 "solves__solved_by" ,
8284 )
83- return (
84- Team .objects .filter (is_visible = True )
85- .order_by ("id" )
86- .prefetch_related (
85+ else :
86+ qs = Team .objects .filter (is_visible = True ).order_by ("id" ).prefetch_related (
8787 "solves" ,
8888 "members" ,
8989 "hints_used" ,
9090 "solves__challenge" ,
9191 "solves__score" ,
9292 "solves__solved_by" ,
9393 )
94- )
94+ return qs . annotate ( members_count = Count ( "members" ) )
9595
9696
9797class CreateTeamView (CreateAPIView ):
You can’t perform that action at this time.
0 commit comments