summaryrefslogtreecommitdiff
path: root/django/contrib/admin/checks.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/admin/checks.py')
-rw-r--r--django/contrib/admin/checks.py27
1 files changed, 10 insertions, 17 deletions
diff --git a/django/contrib/admin/checks.py b/django/contrib/admin/checks.py
index 47e40d62ab..3186d8a752 100644
--- a/django/contrib/admin/checks.py
+++ b/django/contrib/admin/checks.py
@@ -104,8 +104,8 @@ class BaseModelAdminChecks(object):
return refer_to_missing_field(field=field_name, option=label,
model=model, obj=obj, id='admin.E002')
else:
- if not isinstance(field, (models.ForeignKey, models.ManyToManyField)):
- return must_be('a ForeignKey or ManyToManyField',
+ if not field.many_to_many and not isinstance(field, models.ForeignKey):
+ return must_be('a foreign key or a many-to-many field',
option=label, obj=obj, id='admin.E003')
else:
return []
@@ -218,11 +218,10 @@ class BaseModelAdminChecks(object):
# be an extra field on the form.
return []
else:
- if (isinstance(field, models.ManyToManyField) and
- not field.remote_field.through._meta.auto_created):
+ if field.many_to_many and not field.remote_field.through._meta.auto_created:
return [
checks.Error(
- "The value of '%s' cannot include the ManyToManyField '%s', "
+ "The value of '%s' cannot include the many-to-many field '%s' "
"because that field manually specifies a relationship model."
% (label, field_name),
obj=obj.__class__,
@@ -295,8 +294,8 @@ class BaseModelAdminChecks(object):
return refer_to_missing_field(field=field_name, option=label,
model=model, obj=obj, id='admin.E019')
else:
- if not isinstance(field, models.ManyToManyField):
- return must_be('a ManyToManyField', option=label, obj=obj, id='admin.E020')
+ if not field.many_to_many:
+ return must_be('a many-to-many field', option=label, obj=obj, id='admin.E020')
else:
return []
@@ -389,23 +388,17 @@ class BaseModelAdminChecks(object):
is a name of existing field and the field is one of the allowed types.
"""
- forbidden_field_types = (
- models.DateTimeField,
- models.ForeignKey,
- models.ManyToManyField
- )
-
try:
field = model._meta.get_field(field_name)
except FieldDoesNotExist:
return refer_to_missing_field(field=field_name, option=label,
model=model, obj=obj, id='admin.E027')
else:
- if isinstance(field, forbidden_field_types):
+ if field.many_to_many or isinstance(field, (models.DateTimeField, models.ForeignKey)):
return [
checks.Error(
"The value of '%s' refers to '%s', which must not be a DateTimeField, "
- "ForeignKey or ManyToManyField." % (label, field_name),
+ "a foreign key, or a many-to-many field." % (label, field_name),
obj=obj.__class__,
id='admin.E028',
)
@@ -629,10 +622,10 @@ class ModelAdminChecks(BaseModelAdminChecks):
id='admin.E108',
)
]
- elif isinstance(field, models.ManyToManyField):
+ elif getattr(field, 'many_to_many', False):
return [
checks.Error(
- "The value of '%s' must not be a ManyToManyField." % label,
+ "The value of '%s' must not be a many-to-many field." % label,
obj=obj.__class__,
id='admin.E109',
)