      for key in keys[:-1]:
          if key not in target:
              target[key] = {}
          target = target[key]
      target[keys[-1]] = value
  
  
  def is_custom_action(action):
      return action not in set([
          'retrieve', 'list', 'create', 'update', 'partial_update', 'destroy'
 
</s> remove from rest_framework.viewsets import ModelViewSet
 </s> add from rest_framework.viewsets import GenericViewSet, ModelViewSet

from .models import BasicModel </s> remove from rest_framework.routers import DefaultRouter
 </s> add from rest_framework.routers import DefaultRouter, SimpleRouter </s> remove from rest_framework import filters, pagination, permissions, serializers
 </s> add from rest_framework import (
    filters, generics, pagination, permissions, serializers
)
    try:
        target[keys[-1]] = value
    except TypeError:
        msg = INSERT_INTO_COLLISION_FMT.format(
            value_url=value.url,
            target_url=target.url,
            keys=keys
        )
        raise ValueError(msg)
      for key in keys[:-1]:
          if key not in target:
              target[key] = {}
          target = target[key]
    try:
        target[keys[-1]] = value
    except TypeError:
        msg = INSERT_INTO_COLLISION_FMT.format(
            value_url=value.url,
            target_url=target.url,
            keys=keys
        )
        raise ValueError(msg)
  
  
  def is_custom_action(action):
      return action not in set([
          'retrieve', 'list', 'create', 'update', 'partial_update', 'destroy'
keep keep keep keep replace keep keep keep keep keep
 Fix naming collisions in Schema Generation  (#5464)

* Add failing tests for #4704

* Add generic view based test case.

* Adjust insert_into to raise ValueError 
rest_framework/schemas/generators.py