summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-08-05 21:36:49 +0200
committerGitHub <noreply@github.com>2024-08-05 16:36:49 -0300
commit8deb6bb1fc427762d56646bf7306cbd11fb5bb68 (patch)
tree563f85226d726bda252a089ea6f0f42199beaf62 /django
parente9e14709ffaefaf90c1b49e3d5a1c79b481df52a (diff)
Fixed #35657 -- Made FileField handle db_default values.
Diffstat (limited to 'django')
-rw-r--r--django/db/models/fields/files.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/django/db/models/fields/files.py b/django/db/models/fields/files.py
index 7c911f4b23..0716d3599e 100644
--- a/django/db/models/fields/files.py
+++ b/django/db/models/fields/files.py
@@ -9,6 +9,7 @@ from django.core.files.images import ImageFile
from django.core.files.storage import Storage, default_storage
from django.core.files.utils import validate_file_name
from django.db.models import signals
+from django.db.models.expressions import DatabaseDefault
from django.db.models.fields import Field
from django.db.models.query_utils import DeferredAttribute
from django.db.models.utils import AltersData
@@ -197,6 +198,12 @@ class FileDescriptor(DeferredAttribute):
attr = self.field.attr_class(instance, self.field, file)
instance.__dict__[self.field.attname] = attr
+ # If this value is a DatabaseDefault, initialize the attribute class
+ # for this field with its db_default value.
+ elif isinstance(file, DatabaseDefault):
+ attr = self.field.attr_class(instance, self.field, self.field.db_default)
+ instance.__dict__[self.field.attname] = attr
+
# Other types of files may be assigned as well, but they need to have
# the FieldFile interface added to them. Thus, we wrap any other type of
# File inside a FieldFile (well, the field's attr_class, which is