diff options
| author | Simon Charette <charette.s@gmail.com> | 2015-09-17 11:15:43 -0400 |
|---|---|---|
| committer | Simon Charette <charette.s@gmail.com> | 2015-09-18 14:31:36 -0400 |
| commit | 71ebcb85b931f43865df5b322b2cf06d3da23f69 (patch) | |
| tree | f0030999def3b0b4c6996ebd6175aafa300f371c /django/db | |
| parent | 75ed5900321d170debef4ac452b8b3cf8a1c2384 (diff) | |
Fixed #25417 -- Added a field check for invalid default values.
Diffstat (limited to 'django/db')
| -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 [ |
