diff options
Diffstat (limited to 'tests/admin_views')
| -rw-r--r-- | tests/admin_views/admin.py | 6 | ||||
| -rw-r--r-- | tests/admin_views/models.py | 17 | ||||
| -rw-r--r-- | tests/admin_views/tests.py | 9 |
3 files changed, 31 insertions, 1 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py index cb72d1b35b..8897e27de1 100644 --- a/tests/admin_views/admin.py +++ b/tests/admin_views/admin.py @@ -35,7 +35,8 @@ from .models import (Article, Chapter, Child, Parent, Picture, Widget, UnchangeableObject, UserMessenger, Simple, Choice, ShortMessage, Telegram, FilteredManager, EmptyModelHidden, EmptyModelVisible, EmptyModelMixin, State, City, Restaurant, Worker, ParentWithDependentChildren, - DependentChild, StumpJoke, FieldOverridePost, FunkyTag) + DependentChild, StumpJoke, FieldOverridePost, FunkyTag, + ReferencedByParent, ChildOfReferer, M2MReference) def callable_year(dt_value): @@ -881,6 +882,9 @@ site.register(City, CityAdmin) site.register(Restaurant, RestaurantAdmin) site.register(Worker, WorkerAdmin) site.register(FunkyTag, FunkyTagAdmin) +site.register(ReferencedByParent) +site.register(ChildOfReferer) +site.register(M2MReference) # We intentionally register Promo and ChapterXtra1 but not Chapter nor ChapterXtra2. # That way we cover all four cases: diff --git a/tests/admin_views/models.py b/tests/admin_views/models.py index fb72b12717..413201c614 100644 --- a/tests/admin_views/models.py +++ b/tests/admin_views/models.py @@ -822,3 +822,20 @@ class Worker(models.Model): work_at = models.ForeignKey(Restaurant) name = models.CharField(max_length=50) surname = models.CharField(max_length=50) + + +# Models for #23329 +class ReferencedByParent(models.Model): + pass + + +class ParentWithFK(models.Model): + fk = models.ForeignKey(ReferencedByParent) + + +class ChildOfReferer(ParentWithFK): + pass + + +class M2MReference(models.Model): + ref = models.ManyToManyField('self') diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index cf5d22ebd9..03a2974260 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -617,6 +617,15 @@ class AdminViewBasicTest(AdminViewBasicTestCase): response = self.client.get("/test_admin/admin/admin_views/section/", {TO_FIELD_VAR: 'id'}) self.assertEqual(response.status_code, 200) + # Specifying a field referenced by another model though a m2m should be allowed. + response = self.client.get("/test_admin/admin/admin_views/m2mreference/", {TO_FIELD_VAR: 'id'}) + self.assertEqual(response.status_code, 200) + + # Specifying a field that is not refered by any other model directly registered + # to this admin site but registered through inheritance should be allowed. + response = self.client.get("/test_admin/admin/admin_views/referencedbyparent/", {TO_FIELD_VAR: 'id'}) + self.assertEqual(response.status_code, 200) + # We also want to prevent the add and change view from leaking a # disallowed field value. with patch_logger('django.security.DisallowedModelAdminToField', 'error') as calls: |
