  
          self.storage = storage or default_storage
          self.upload_to = upload_to
  
          kwargs.setdefault('max_length', 100)
          super().__init__(verbose_name, name, **kwargs)
  
 
</s> remove     A storage object, which handles the storage and retrieval of your
    files. See :doc:`/topics/files` for details on how to provide this object.
 </s> add     A storage object, or a callable which returns a storage object. This
    handles the storage and retrieval of your files. See :doc:`/topics/files`
    for details on how to provide this object.

    .. versionchanged:: 3.1

        The ability to provide a callable was added. </s> remove from django.core.files.storage import default_storage
 </s> add from django.core.files.storage import Storage, default_storage
        if callable(self.storage):
            self.storage = self.storage()
            if not isinstance(self.storage, Storage):
                raise TypeError(
                    "%s.storage must be a subclass/instance of %s.%s"
                    % (self.__class__.__qualname__, Storage.__module__, Storage.__qualname__)
                )
  
          self.storage = storage or default_storage
        if callable(self.storage):
            self.storage = self.storage()
            if not isinstance(self.storage, Storage):
                raise TypeError(
                    "%s.storage must be a subclass/instance of %s.%s"
                    % (self.__class__.__qualname__, Storage.__module__, Storage.__qualname__)
                )
          self.upload_to = upload_to
  
          kwargs.setdefault('max_length', 100)
          super().__init__(verbose_name, name, **kwargs)
  
keep add keep keep keep keep keep
 Fixed #28184 -- Allowed using a callable for FileField and ImageField storage. 
django/db/models/fields/files.py