Сократите количество запросов к базам данных

мои модели

class AssessmentTest(BasicModel):
    title = models.CharField(max_length=120, unique=True)


class UserTestResult(BasicModel):
    assessment_test = models.ForeignKey(AssessmentTest, on_delete=models.CASCADE, related_name='users_passed')
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='test_results')
    points = models.PositiveIntegerField(default=0)

мои взгляды

class AssessmentTestView(ReadOnlyModelViewSet):
    serializer_class = AssessmentTestSerializer
    queryset = AssessmentTest.objects.all()

мои сериализаторы

class AssessmentTestListSerializer(serializers.ModelSerializer):
    class Meta:
        model = AssessmentTest
        fields = [
            'id',
            'title',
            'user_results',
        ]

    user_results = serializers.SerializerMethodField()

    def get_user_results(self, obj: AssessmentTest):
        user = self.context['request'].user
        if not user.is_anonymous:
            test_result = UserTestResult.objects.filter(assessment_test=obj, user=user)
            if test_result:
                return UserTestResultSerializer(instance=test_result.last()).data
        return None

Когда я пытаюсь получить все тесты, в get_user_results я сталкиваюсь с проблемой n+1 (для каждого теста есть дополнительный запрос к UserTestResult)

Могу ли я как-то избежать этого? Может быть можно использовать prefetch_related на обратном foreign_key в queryset? Или нет? Кто-нибудь может помочь?

Вернуться на верх