diff options
Diffstat (limited to 'django/contrib/admin/options.py')
| -rw-r--r-- | django/contrib/admin/options.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index e7cb85f777..bc13097951 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -284,11 +284,13 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)): return False # Make sure at least one of the models registered for this site - # references this field. + # references this field through a FK or a M2M relationship. registered_models = self.admin_site._registry - for related_object in opts.get_all_related_objects(): - if (related_object.model in registered_models and - field == related_object.field.rel.get_related_field()): + for related_object in (opts.get_all_related_objects() + + opts.get_all_related_many_to_many_objects()): + related_model = related_object.model + if (any(issubclass(model, related_model) for model in registered_models) and + related_object.field.rel.get_related_field() == field): return True return False |
