diff options
author | miigotu <miigotu@gmail.com> | 2020-03-31 12:12:39 +0200 |
---|---|---|
committer | Carlton Gibson <carlton@noumenal.es> | 2020-04-08 11:26:17 +0200 |
commit | 210657b791fec359a9109b69e566018253edfad0 (patch) | |
tree | d9bb41fcd6aae39772ac373697834b24f5193524 /django/db/models/fields/files.py | |
parent | db6933a032c850153a688b6c977691b37ca02745 (diff) | |
download | django-210657b791fec359a9109b69e566018253edfad0.tar.gz |
Fixed #28184 -- Allowed using a callable for FileField and ImageField storage.
Diffstat (limited to 'django/db/models/fields/files.py')
-rw-r--r-- | django/db/models/fields/files.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/django/db/models/fields/files.py b/django/db/models/fields/files.py index 7ee38d937f..b682db414c 100644 --- a/django/db/models/fields/files.py +++ b/django/db/models/fields/files.py @@ -5,7 +5,7 @@ from django import forms from django.core import checks from django.core.files.base import File from django.core.files.images import ImageFile -from django.core.files.storage import default_storage +from django.core.files.storage import Storage, default_storage from django.db.models import signals from django.db.models.fields import Field from django.utils.translation import gettext_lazy as _ @@ -234,6 +234,13 @@ class FileField(Field): self._primary_key_set_explicitly = 'primary_key' in kwargs 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) |