Loading django/contrib/admin/util.py +3 −1 Original line number Diff line number Diff line Loading @@ -379,7 +379,9 @@ class NotRelationField(Exception): def get_model_from_relation(field): if isinstance(field, models.related.RelatedObject): if hasattr(field, 'get_path_info'): return field.get_path_info()[-1].to_opts.model elif isinstance(field, models.related.RelatedObject): return field.model elif getattr(field, 'rel'): # or isinstance? return field.rel.to Loading tests/admin_views/tests.py +19 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import datetime from django.conf import settings, global_settings from django.core import mail from django.core.exceptions import ImproperlyConfigured from django.core.files import temp as tempfile from django.core.urlresolvers import reverse # Register auth models with the admin. Loading @@ -16,6 +17,7 @@ from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME from django.contrib.admin.models import LogEntry, DELETION from django.contrib.admin.sites import LOGIN_FORM_KEY from django.contrib.admin.util import quote from django.contrib.admin.validation import ModelAdminValidator from django.contrib.admin.views.main import IS_POPUP_VAR from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase from django.contrib.auth import REDIRECT_FIELD_NAME Loading Loading @@ -4361,3 +4363,20 @@ class AdminKeepChangeListFiltersTests(TestCase): class NamespacedAdminKeepChangeListFiltersTests(AdminKeepChangeListFiltersTests): admin_site = site2 class AdminGenericRelationTests(TestCase): def test_generic_relation_fk_list_filter(self): """ Validates a model with a generic relation to a model with a foreign key can specify the generic+fk relationship path as a list_filter. See trac #21428. """ class GenericFKAdmin(admin.ModelAdmin): list_filter = ('tags__content_type',) validator = ModelAdminValidator() try: validator.validate_list_filter(GenericFKAdmin, Plot) except ImproperlyConfigured: self.fail("Couldn't validate a GenericRelation -> FK path in ModelAdmin.list_filter") Loading
django/contrib/admin/util.py +3 −1 Original line number Diff line number Diff line Loading @@ -379,7 +379,9 @@ class NotRelationField(Exception): def get_model_from_relation(field): if isinstance(field, models.related.RelatedObject): if hasattr(field, 'get_path_info'): return field.get_path_info()[-1].to_opts.model elif isinstance(field, models.related.RelatedObject): return field.model elif getattr(field, 'rel'): # or isinstance? return field.rel.to Loading
tests/admin_views/tests.py +19 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import datetime from django.conf import settings, global_settings from django.core import mail from django.core.exceptions import ImproperlyConfigured from django.core.files import temp as tempfile from django.core.urlresolvers import reverse # Register auth models with the admin. Loading @@ -16,6 +17,7 @@ from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME from django.contrib.admin.models import LogEntry, DELETION from django.contrib.admin.sites import LOGIN_FORM_KEY from django.contrib.admin.util import quote from django.contrib.admin.validation import ModelAdminValidator from django.contrib.admin.views.main import IS_POPUP_VAR from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase from django.contrib.auth import REDIRECT_FIELD_NAME Loading Loading @@ -4361,3 +4363,20 @@ class AdminKeepChangeListFiltersTests(TestCase): class NamespacedAdminKeepChangeListFiltersTests(AdminKeepChangeListFiltersTests): admin_site = site2 class AdminGenericRelationTests(TestCase): def test_generic_relation_fk_list_filter(self): """ Validates a model with a generic relation to a model with a foreign key can specify the generic+fk relationship path as a list_filter. See trac #21428. """ class GenericFKAdmin(admin.ModelAdmin): list_filter = ('tags__content_type',) validator = ModelAdminValidator() try: validator.validate_list_filter(GenericFKAdmin, Plot) except ImproperlyConfigured: self.fail("Couldn't validate a GenericRelation -> FK path in ModelAdmin.list_filter")