Skip to content

Commit dd15e20

Browse files
committed
44963 fix(templates): fix N+1 error for GET /templates api
1 parent 78279c1 commit dd15e20

3 files changed

Lines changed: 9 additions & 31 deletions

File tree

backend/src/processes/querysets.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -315,16 +315,15 @@ def raw_list_query(
315315
Prefetch(
316316
lookup='selections',
317317
queryset=(
318-
FieldTemplateSelection.
319-
objects.only('value')
318+
FieldTemplateSelection
319+
.objects.order_by('id')
320320
),
321321
to_attr='selections_values',
322322
),
323323
Prefetch(
324324
'dataset__items',
325325
queryset=(
326326
DatasetItem.objects
327-
.only('value')
328327
.order_by('order')
329328
),
330329
to_attr='dataset_values',
@@ -388,15 +387,14 @@ def raw_list_by_owners_query(
388387
lookup='selections',
389388
queryset=(
390389
FieldTemplateSelection
391-
.objects.only('value')
390+
.objects.order_by('id')
392391
),
393392
to_attr='selections_values',
394393
),
395394
Prefetch(
396395
'dataset__items',
397396
queryset=(
398397
DatasetItem.objects
399-
.only('value')
400398
.order_by('order')
401399
),
402400
to_attr='dataset_values',
@@ -693,21 +691,13 @@ def raw_list_query(
693691
if fields:
694692
from src.processes.models.workflows.fields import (
695693
TaskField,
696-
FieldSelection,
697694
)
698695
prefetch_args.append(
699696
Prefetch(
700697
lookup='fields',
701698
to_attr='filtered_fields',
702699
queryset=(
703700
TaskField.objects
704-
.prefetch_related(
705-
Prefetch(
706-
'kickoff__output__selections',
707-
queryset=FieldSelection.objects.only('value'),
708-
to_attr='selections_values',
709-
),
710-
)
711701
.filter(api_name__in=fields)
712702
.order_by('kickoff_id', 'task__number', '-order')
713703
),

backend/src/processes/serializers/workflows/workflow.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -408,16 +408,12 @@ def get_kickoff(self, instance: Workflow):
408408
queryset=TaskField.objects.all().prefetch_related(
409409
Prefetch(
410410
lookup='selections',
411-
queryset=FieldSelection.objects.only('value'),
411+
queryset=FieldSelection.objects.order_by('id'),
412412
to_attr='selections_values',
413413
),
414414
Prefetch(
415415
'dataset__items',
416-
queryset=(
417-
DatasetItem.objects
418-
.only('value')
419-
.order_by('order')
420-
),
416+
queryset=DatasetItem.objects.order_by('order'),
421417
to_attr='dataset_values',
422418
),
423419
),

backend/src/processes/views/task.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -272,16 +272,12 @@ def prefetch_queryset(
272272
'output__attachments',
273273
Prefetch(
274274
'output__selections',
275-
queryset=FieldSelection.objects.only('value'),
275+
queryset=FieldSelection.objects.order_by('id'),
276276
to_attr='selections_values',
277277
),
278278
Prefetch(
279279
'output__dataset__items',
280-
queryset=(
281-
DatasetItem.objects
282-
.only('value')
283-
.order_by('order')
284-
),
280+
queryset=DatasetItem.objects.order_by('order'),
285281
to_attr='dataset_values',
286282
),
287283
).select_related(
@@ -523,16 +519,12 @@ def complete(self, request, *args, **kwargs):
523519
queryset=TaskField.objects.all().prefetch_related(
524520
Prefetch(
525521
lookup='selections',
526-
queryset=FieldSelection.objects.only('value'),
522+
queryset=FieldSelection.objects.order_by('id'),
527523
to_attr='selections_values',
528524
),
529525
Prefetch(
530526
'dataset__items',
531-
queryset=(
532-
DatasetItem.objects
533-
.only('value')
534-
.order_by('order')
535-
),
527+
queryset=DatasetItem.objects.order_by('order'),
536528
to_attr='dataset_values',
537529
),
538530
'attachments',

0 commit comments

Comments
 (0)