Django restframework SerializerMethodField фоновая работа

Я пишу проект на Django с фреймворком rest, используя SerializerMethodField. Этот метод делает запросы для каждой строки, чтобы получить данные, или View собирает все запросы и отправляет их в БД? Django может сделать это как один общий запрос?


class SubjectSerializer(serializers.ModelSerializer):

    edu_plan = serializers.SerializerMethodField(read_only=True)
    academic_year_semestr = serializers.SerializerMethodField(read_only=True)
    edu_form = serializers.SerializerMethodField(read_only=True)
    
    def get_edu_plan(self, cse):
        return cse.curriculum_subject.curriculum.edu_plan.name
    
    def get_academic_year_semestr(self, cse):
        semester = cse.curriculum_subject.curriculum.semester
        return {'academic_year': semester.academic_year, 'semester': semester}
    
    def get_edu_form(self, cse):
        return cse.curriculum_subject.curriculum.edu_form.name

    class Meta:
        model = CurriculumSubjectEmployee
        fields = [
            'id',
            'name',
            'edu_plan',
            'academic_year_semestr',
            'edu_form'
        ]

class SubjectViewSet(viewsets.ReadOnlyModelViewSet):

    serializer_class = SubjectSerializer

    def get_queryset(self):
        contract = self.request.user.employee.contract
        
        if contract is None:
            raise NotFound(detail="Contract not found", code=404)

        department = contract.department
        
        cses = CurriculumSubjectEmployee\
            .objects\
            .filter(curriculum_subject__department=department)


        return cses

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