code: def _create_model_class(self, model):
          
          cls_name = model.replace('.', '_')
          # Hack for Python 2 (no need to do this for Python 3)
          if sys.version_info[0] < 3:
              if isinstance(cls_name, unicode):
                  cls_name = cls_name.encode('utf-8')
          # Retrieve server fields info and generate corresponding local fields
          attrs = {
              '_env': self,
              '_odoo': self._odoo,
              '_name': model,
              '_columns': {},
          }
          fields_get = self._odoo.execute(model, 'fields_get')
          for field_name, field_data in fields_get.items():
              if field_name not in FIELDS_RESERVED:
                  Field = fields.generate_field(field_name, field_data)
                  attrs['_columns'][field_name] = Field
                  attrs[field_name] = Field
          # Case where no field 'name' exists, we generate one (which will be
          # in readonly mode) in purpose to be filled with the 'name_get' method
          if 'name' not in attrs['_columns']:
              field_data = {'type': 'text', 'string': 'Name', 'readonly': True}
              Field = fields.generate_field('name', field_data)
              attrs['_columns']['name'] = Field
              attrs['name'] = Field
          return type(cls_name, (Model,), attrs)
docs: Generate the model proxy class.
  
          :return: a :class:`odoorpc.models.Model` class