File tree Expand file tree Collapse file tree 2 files changed +13
-14
lines changed
Expand file tree Collapse file tree 2 files changed +13
-14
lines changed Original file line number Diff line number Diff line change @@ -35,7 +35,7 @@ class Meta:
3535 ]
3636
3737class SimulationSessionsDetailSerializer (serializers .ModelSerializer ):
38- runs = SimulationRunSerializer ( many = True , read_only = True )
38+ runs = serializers . SerializerMethodField ( )
3939
4040 state_count = serializers .IntegerField (read_only = True )
4141 transition_count = serializers .IntegerField (read_only = True )
@@ -64,6 +64,10 @@ class Meta:
6464 'transition_count' ,
6565 'runs'
6666 ]
67+
68+ def get_runs (self , obj ):
69+ recent_runs = obj .runs .order_by ('-created_at' )[:5 ]
70+ return SimulationRunSerializer (recent_runs , many = True ).data
6771
6872 def get_share_url (self , obj ):
6973 """
Original file line number Diff line number Diff line change @@ -98,30 +98,25 @@ def get_queryset(self):
9898 ).select_related ('user' ).prefetch_related (
9999 Prefetch (
100100 'runs' ,
101- queryset = SimulationRun .objects .order_by ('-created_at' )[: 5 ]
101+ queryset = SimulationRun .objects .order_by ('-created_at' )
102102 )
103103 )
104104
105105 # List view: Only user's own sessions
106106 queryset = SimulationSessions .objects .filter (
107107 user = self .request .user
108108 )
109- queryset = queryset .select_related ('user' )
110- queryset = queryset .prefetch_related (
111- Prefetch (
112- 'runs' ,
113- queryset = SimulationRun .objects .order_by ('-created_at' )[:5 ]
114- )
115- )
116- queryset = queryset .annotate (
117- run_count = Count ('runs' )
118- )
119-
120- # Conditional filtering based on query params
109+
110+ # Conditional filtering based on query params (must be before select_related)
121111 automata_type = self .request .query_params .get ('type' )
122112 if automata_type :
123113 queryset = queryset .filter (automata_type = automata_type .upper ())
124114
115+ # Optimize queries
116+ queryset = queryset .select_related ('user' )
117+ queryset = queryset .annotate (run_count = Count ('runs' ))
118+ queryset = queryset .prefetch_related ('runs' )
119+
125120 logger .debug (f"Queryset for user { self .request .user .email } : { queryset .query } " )
126121
127122 return queryset
You can’t perform that action at this time.
0 commit comments