summaryrefslogtreecommitdiff
path: root/django/db
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2015-09-17 11:15:43 -0400
committerSimon Charette <charette.s@gmail.com>2015-09-18 14:31:36 -0400
commit71ebcb85b931f43865df5b322b2cf06d3da23f69 (patch)
treef0030999def3b0b4c6996ebd6175aafa300f371c /django/db
parent75ed5900321d170debef4ac452b8b3cf8a1c2384 (diff)
Fixed #25417 -- Added a field check for invalid default values.
Diffstat (limited to 'django/db')
-rw-r--r--django/db/models/fields/__init__.py17
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 [