diff options
| author | David Sanders <shang.xiao.sanders@gmail.com> | 2024-08-05 08:22:29 +0200 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-08-05 17:42:19 +0200 |
| commit | 333cfab512689490ea8a6a95598a94d77816fa2d (patch) | |
| tree | 2783f13b4fb53f4c2b88f62a4a09715ceaa5d98e /django/db/models/fields/__init__.py | |
| parent | e88ef6a27d125da95e530be20b879fb4f540f7f6 (diff) | |
[5.0.x] Fixed #35638 -- Updated validate_constraints to consider db_default.
Backport of 509763c79952cde02d9f5b584af4278bdbed77b2 from main.
Diffstat (limited to 'django/db/models/fields/__init__.py')
| -rw-r--r-- | django/db/models/fields/__init__.py | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 26cb1bc485..81e32f2d15 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -982,13 +982,7 @@ class Field(RegisterLookupMixin): def pre_save(self, model_instance, add): """Return field's value just before saving.""" - value = getattr(model_instance, self.attname) - if not connection.features.supports_default_keyword_in_insert: - from django.db.models.expressions import DatabaseDefault - - if isinstance(value, DatabaseDefault): - return self._db_default_expression - return value + return getattr(model_instance, self.attname) def get_prep_value(self, value): """Perform preliminary non-db specific value checks and conversions.""" @@ -1030,7 +1024,9 @@ class Field(RegisterLookupMixin): if self.db_default is not NOT_PROVIDED: from django.db.models.expressions import DatabaseDefault - return DatabaseDefault + return lambda: DatabaseDefault( + self._db_default_expression, output_field=self + ) if ( not self.empty_strings_allowed |
