docs: def populate_obj(self, obj, name):
          """Store file."""
          from abilian.core.models.blob import Blob
  
          delete_value = self.allow_delete and self.delete_files_index
  
          if not self.has_file() and not delete_value:
              # nothing uploaded, and nothing to delete
              return
  
          state = sa.inspect(obj)
          mapper = state.mapper
          if name not in mapper.relationships:
              # directly store in database
              return super().populate_obj(obj, name)
  
          rel = getattr(mapper.relationships, name)
          if rel.uselist:
              raise ValueError("Only single target supported; else use ModelFieldList")
  
          if delete_value:
              setattr(obj, name, None)
              return
  
          #  FIXME: propose option to always create a new blob
          cls = rel.mapper.class_
          val = getattr(obj, name)
  
          if val is None:
              val = cls()
              setattr(obj, name, val)
  
          data = ""
          if self.has_file():
              data = self.data
              if not issubclass(cls, Blob):
                  data = data.read()
  
          setattr(val, self.blob_attr, data)