diff options
| author | Ben Cail <bcail@crossway.org> | 2024-03-05 16:36:11 -0500 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2024-03-08 06:46:40 +0100 |
| commit | 5f07460a67825bfc3f0129feec94a24bbf6d2a5f (patch) | |
| tree | 5fa2fae9350f27039e1d3886f3197b580f06b9f2 /django | |
| parent | f931cbec21cce3e2e68239c77614e6aa5026b882 (diff) | |
[5.0.x] Fixed #35223 -- Made Model.full_clean() ignore fields with db_default when validating empty values.
Thanks Brian Ibbotson for the report.
Regression in 7414704e88d73dafbcfbb85f9bc54cb6111439d3.
Backport of 1570ef02f34037d32218d463342592debccf915c from main.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/base.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index 3b949c80bf..8b15932e45 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -30,7 +30,7 @@ from django.db.models import NOT_PROVIDED, ExpressionWrapper, IntegerField, Max, from django.db.models.constants import LOOKUP_SEP from django.db.models.constraints import CheckConstraint, UniqueConstraint from django.db.models.deletion import CASCADE, Collector -from django.db.models.expressions import RawSQL +from django.db.models.expressions import DatabaseDefault, RawSQL from django.db.models.fields.related import ( ForeignObjectRel, OneToOneField, @@ -1568,6 +1568,9 @@ class Model(AltersData, metaclass=ModelBase): raw_value = getattr(self, f.attname) if f.blank and raw_value in f.empty_values: continue + # Skip validation for empty fields when db_default is used. + if isinstance(raw_value, DatabaseDefault): + continue try: setattr(self, f.attname, f.clean(raw_value, self)) except ValidationError as e: |
