diff options
author | Andrey Kuzmin <jack.cvr@gmail.com> | 2015-10-25 22:15:37 +0200 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-11-12 19:50:54 -0500 |
commit | 815f4d206dfea41bdff167283c2cac43a71524ac (patch) | |
tree | b48d53496c534c87139cb8d9f34d9670d7710a2f /tests/admin_filters | |
parent | 7624fdb9f8ea4cbff407436606998f572898038b (diff) | |
download | django-815f4d206dfea41bdff167283c2cac43a71524ac.tar.gz |
Fixed #25606 -- Added support for "__" lookup in RelatedOnlyFieldList
Diffstat (limited to 'tests/admin_filters')
-rw-r--r-- | tests/admin_filters/models.py | 6 | ||||
-rw-r--r-- | tests/admin_filters/tests.py | 21 |
2 files changed, 27 insertions, 0 deletions
diff --git a/tests/admin_filters/models.py b/tests/admin_filters/models.py index 40f25d2f30..db37958882 100644 --- a/tests/admin_filters/models.py +++ b/tests/admin_filters/models.py @@ -26,6 +26,12 @@ class Book(models.Model): related_name='books_contributed', blank=True, ) + employee = models.ForeignKey( + 'Employee', + models.SET_NULL, + verbose_name='Employee', + blank=True, null=True, + ) is_best_seller = models.NullBooleanField(default=0) date_registered = models.DateField(null=True) # This field name is intentionally 2 characters long (#16080). diff --git a/tests/admin_filters/tests.py b/tests/admin_filters/tests.py index f1756a3c64..11f81fc3ed 100644 --- a/tests/admin_filters/tests.py +++ b/tests/admin_filters/tests.py @@ -169,6 +169,7 @@ class BookAdminRelatedOnlyFilter(ModelAdmin): 'year', 'is_best_seller', 'date_registered', 'no', ('author', RelatedOnlyFieldListFilter), ('contributors', RelatedOnlyFieldListFilter), + ('employee__department', RelatedOnlyFieldListFilter), ) ordering = ('-id',) @@ -580,6 +581,26 @@ class ListFiltersTests(TestCase): expected = [(self.alfred.pk, 'alfred'), (self.bob.pk, 'bob')] self.assertEqual(sorted(filterspec.lookup_choices), sorted(expected)) + def test_relatedonlyfieldlistfilter_underscorelookup_foreignkey(self): + Department.objects.create(code='TEST', description='Testing') + self.djangonaut_book.employee = self.john + self.djangonaut_book.save() + self.bio_book.employee = self.jack + self.bio_book.save() + + modeladmin = BookAdminRelatedOnlyFilter(Book, site) + request = self.request_factory.get('/') + changelist = self.get_changelist(request, Book, modeladmin) + + # Only actual departments should be present in employee__department's + # list filter. + filterspec = changelist.get_filters(request)[0][6] + expected = [ + (self.dev.code, str(self.dev)), + (self.design.code, str(self.design)), + ] + self.assertEqual(sorted(filterspec.lookup_choices), sorted(expected)) + def test_relatedonlyfieldlistfilter_manytomany(self): modeladmin = BookAdminRelatedOnlyFilter(Book, site) |