Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions learning_resources/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,12 @@ def for_serialization(self, *, user: Optional["User"] = None):
),
to_attr="_podcasts",
),
Prefetch(
"children",
queryset=LearningResourceRelationship.objects.select_related(
"child"
).order_by("position"),
),
Prefetch(
"user_lists",
queryset=UserListRelationship.objects.filter(parent__author=user)
Expand Down
2 changes: 1 addition & 1 deletion learning_resources/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -915,7 +915,7 @@ class LearningResourceBaseSerializer(serializers.ModelSerializer, WriteableTopic
@extend_schema_field(LearningResourceRelationshipChildField(allow_null=True))
def get_children(self, instance):
return LearningResourceRelationshipChildField(
instance.children.order_by("position"), many=True, read_only=True
instance.children, many=True, read_only=True
).data

def get_resource_category(self, instance) -> str:
Expand Down
5 changes: 3 additions & 2 deletions learning_resources/views_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,8 @@ def test_program_endpoint(client, url, params):
def test_program_detail_endpoint(client, django_assert_num_queries, url):
"""Test program endpoint"""
program = ProgramFactory.create()
with django_assert_num_queries(18 + program.learning_resource.children.count()):
assert program.learning_resource.children.count() > 0
with django_assert_num_queries(18): # should be same # regardless of child count
resp = client.get(reverse(url, args=[program.learning_resource.id]))
assert resp.data.get("title") == program.learning_resource.title
assert resp.data.get("resource_type") == LearningResourceType.program.name
Expand Down Expand Up @@ -219,7 +220,7 @@ def test_no_excess_queries(rf, user, mocker, django_assert_num_queries, course_c
request = rf.get("/")
request.user = user

with django_assert_num_queries(19):
with django_assert_num_queries(20):
view = CourseViewSet(request=request)
results = view.get_queryset().all()
assert len(results) == course_count
Expand Down
Loading