Встречается на собеседованиях • сегодня

Как изменить поведение метода retrieve в ModelViewSet

Для изменения поведения метода retrieve в ModelViewSet можно переопределить его в своем классе. Вот пример:

python
from rest_framework import viewsets

class MyModelViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer
text
def retrieve(self, request, *args, **kwargs):
    instance = self.get_object()
    # Кастомная логика перед сериализацией
    serializer = self.get_serializer(instance)
    # Кастомная логика после сериализации
    return Response(serializer.data)
text

Ключевые моменты:
1. Используйте `self.get_object()` для получения объекта
2. Применяйте сериализатор через `self.get_serializer()`
3. Можно добавить любую дополнительную логику до/после сериализации
4. Возвращайте стандартный `Response` или кастомный, если нужно

Также можно изменить queryset перед получением объекта или добавить проверки прав доступа.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы