From 2d42e23b6d8fd76f93a96b2310b2c9dfd441d009 Mon Sep 17 00:00:00 2001 From: Brian Helba Date: Mon, 24 Aug 2020 15:27:22 -0400 Subject: Fixed #31941 -- Corrected FileField.deconstruct() with a callable storage. --- django/db/models/fields/files.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'django') diff --git a/django/db/models/fields/files.py b/django/db/models/fields/files.py index e10a5bb6d9..db2450a738 100644 --- a/django/db/models/fields/files.py +++ b/django/db/models/fields/files.py @@ -229,6 +229,8 @@ class FileField(Field): self.storage = storage or default_storage if callable(self.storage): + # Hold a reference to the callable for deconstruct(). + self._storage_callable = self.storage self.storage = self.storage() if not isinstance(self.storage, Storage): raise TypeError( @@ -279,7 +281,7 @@ class FileField(Field): del kwargs["max_length"] kwargs['upload_to'] = self.upload_to if self.storage is not default_storage: - kwargs['storage'] = self.storage + kwargs['storage'] = getattr(self, '_storage_callable', self.storage) return name, path, args, kwargs def get_internal_type(self): -- cgit v1.3