code: def _init_values(self, context=None):
          
          if context is None:
              context = self.env.context
          # Get basic fields (no relational ones)
          basic_fields = []
          for field_name in self._columns:
              field = self._columns[field_name]
              if not getattr(field, 'relation', False):
                  basic_fields.append(field_name)
          # Fetch values from the server
          if self.ids:
              rows = self.__class__.read(
                  self.ids, basic_fields, context=context, load='_classic_write')
              ids_fetched = set()
              for row in rows:
                  ids_fetched.add(row['id'])
                  for field_name in row:
                      if field_name == 'id':
                          continue
                      self._values[field_name][row['id']] = row[field_name]
              ids_in_error = set(self.ids) - ids_fetched
              if ids_in_error:
                  raise ValueError(
                      "There is no '{model}' record with IDs {ids}.".format(
                          model=self._name, ids=list(ids_in_error)))
          # No ID: fields filled with default values
          else:
              default_get = self.__class__.default_get(
                  list(self._columns), context=context)
              for field_name in self._columns:
                  self._values[field_name][None] = default_get.get(
                      field_name, False)
docs: Retrieve field values from the server.
          May be used to restore the original values in the purpose to cancel
          all changes made.