1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

[5.0.x] Fixed #35657 -- Made FileField handle db_default values.

Backport of 8deb6bb1fc from main.
This commit is contained in:
Sarah Boyce
2024-08-05 21:36:49 +02:00
committed by Natalia
parent 333cfab512
commit d7f955462c
4 changed files with 27 additions and 0 deletions

View File

@@ -8,6 +8,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
@@ -192,6 +193,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