1
0
mirror of https://github.com/django/django.git synced 2025-10-29 00:26:07 +00:00

[1.6.x] Fixed #23329 -- Allowed inherited and m2m fields to be referenced in the admin.

Thanks to Trac alias Markush2010 and ross for the detailed reports.

Backport of 3cbb759 from master
This commit is contained in:
Simon Charette
2014-08-21 11:55:23 -04:00
parent 4db64e8491
commit e3453b61c6
8 changed files with 78 additions and 5 deletions

View File

@@ -336,11 +336,13 @@ class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)):
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 in related_object.field.foreign_related_fields):
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