Вопрос проверяет понимание того, когда высокая степень автоматизации DRF оправдана и не приводит к усложнению архитектуры.
ModelViewSet стоит использовать, когда требуется стандартный CRUD API для модели и логика операций типовая. Он автоматически реализует основные методы и хорошо работает с router. Если бизнес-логика сильно отличается от стандартного CRUD, лучше использовать APIView или GenericAPIView. ModelViewSet ускоряет разработку, но снижает явный контроль.
ModelViewSet — это максимально автоматизированный способ построения REST API в DRF.
Определение: CRUD — стандартные операции Create, Read, Update, Delete.
Хорошо использовать, если:
Стандартные операции CRUD
Простая бизнес-логика
Минимальные различия между endpoints
Пример:
class ProductViewSet(ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
Router автоматически создаст URL.
Лучше выбрать APIView, если:
Сложная логика обработки запроса
Нет прямого соответствия модели
Нестандартные методы
Частая стратегия:
Начать с ModelViewSet
Если появляется сложная логика — переходить на более низкий уровень абстракции
ModelViewSet удобно расширяется:
permission_classes
filter_backends
pagination_class
Это позволяет использовать его даже в достаточно сложных API.
ModelViewSet оптимален для стандартных REST API, где скорость разработки и читаемость важнее полного контроля над каждым endpoint.