diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/fields/__init__.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 992db81b34..a210ffc0b7 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -207,6 +207,7 @@ class Field(RegisterLookupMixin): errors = [] errors.extend(self._check_field_name()) errors.extend(self._check_choices()) + errors.extend(self._check_default()) errors.extend(self._check_db_index()) errors.extend(self._check_null_allowed_for_primary_keys()) errors.extend(self._check_backend_specific_checks(**kwargs)) @@ -283,6 +284,22 @@ class Field(RegisterLookupMixin): else: return [] + def _check_default(self): + if self.has_default(): + default = self.get_default() + try: + self.clean(default, None) + except exceptions.ValidationError as messages: + return [ + checks.Error( + "Invalid 'default' value: %s" % message, + hint=None, + obj=self, + id='fields.E008', + ) for message in messages + ] + return [] + def _check_db_index(self): if self.db_index not in (None, True, False): return [ |
