code: def apply_type_shim(cls, _context=None) -> Iterator:
      
      if cls.name in ["IntField", "SmallIntField"]:
          base_nodes = scoped_nodes.builtin_lookup("int")
      elif cls.name in ["CharField", "TextField"]:
          base_nodes = scoped_nodes.builtin_lookup("str")
      elif cls.name == "BooleanField":
          base_nodes = scoped_nodes.builtin_lookup("bool")
      elif cls.name == "FloatField":
          base_nodes = scoped_nodes.builtin_lookup("float")
      elif cls.name == "DecimalField":
          base_nodes = MANAGER.ast_from_module_name("decimal").lookup("Decimal")
      elif cls.name == "DatetimeField":
          base_nodes = MANAGER.ast_from_module_name("datetime").lookup("datetime")
      elif cls.name == "DateField":
          base_nodes = MANAGER.ast_from_module_name("datetime").lookup("date")
      elif cls.name == "ForeignKeyField":
          base_nodes = MANAGER.ast_from_module_name("tortoise.fields").lookup("BackwardFKRelation")
      elif cls.name == "ManyToManyField":
          base_nodes = MANAGER.ast_from_module_name("tortoise.fields").lookup(
              "ManyToManyRelationManager"
          )
      else:
          return iter([cls])
  
      return iter([cls] + base_nodes[1])
docs: Morphs model fields to representative type