Если у вашего viewset нет методов детализации, то drf SimpleRouter не создаст URL-маршрут для /api/basename/{id}/
Таким образом, диспетчер URL-адресов Django не будет соответствовать этим URL-адресам и возвращает 404.
Я не думаю, что имеет смысл возвращать 405 для каждого метода. Этот статус подразумевает, что по крайней мере один метод должен быть действительным для определенного URL.
Вы можете добавить метод фиктивной детализации, но просто передать все запросы обработчику APIView 405.
Я думаю, что это должно заставить маршрутизатор регистрировать подробные URL-адреса для набора и просто возвращать 405 для всего (возможно, за исключением OPTIONS).
class MyViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
def retrieve(self, request, *args, **kwargs):
return self.http_method_not_allowed(request, *args, **kwargs)