diff options
| author | Nilesh Kumar Pahari <nileshpahari@protonmail.com> | 2026-01-26 00:02:29 +0530 |
|---|---|---|
| committer | Natalia <124304+nessita@users.noreply.github.com> | 2026-01-29 10:38:53 -0300 |
| commit | 77b306ea0fea54ed440a369dc38161331602386c (patch) | |
| tree | 0840154f2cb43a1f4acf036fda020b12c76d072d /django | |
| parent | b8fda9f58019cfe10c88aae36614da952f41ac31 (diff) | |
[6.0.x] Fixed #36847 -- Ensured auto_now_add fields are set on pre_save().
Regression in 94680437a45a71c70ca8bd2e68b72aa1e2eff337. Refs #27222.
During INSERT operations, `field.pre_save()` is called to prepare values
for db insertion. The `add` param must be `True` for `auto_now_add`
fields to be populated. The regression commit passed `False`, causing
`auto_now_add` fields to remain `None` when used by other fields, such
as `upload_to` callables.
Thanks Ran Benita for the report.
Backport of fe189dc43ab3eddbbceefb6834893b73ca60d5ed from main.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/base.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index d6aed20199..c02ca7b513 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -1153,7 +1153,9 @@ class Model(AltersData, metaclass=ModelBase): ].features.can_return_columns_from_insert for field in insert_fields: value = ( - getattr(self, field.attname) if raw else field.pre_save(self, False) + getattr(self, field.attname) + if raw + else field.pre_save(self, add=True) ) if hasattr(value, "resolve_expression"): if field not in returning_fields: |
