diff options
author | Paulo <commonzenpython@gmail.com> | 2017-06-09 20:54:10 -0400 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2017-06-12 21:12:54 -0400 |
commit | 9dc83c356d363c090f3351c908cad6f823aeb7bf (patch) | |
tree | 1cad39d01fa806159523ac259d5b61aed162ef1b /tests/admin_inlines | |
parent | c68f5d83c0a4ea4ccf87c7d1d5dd1e9f7b2907a3 (diff) | |
download | django-9dc83c356d363c090f3351c908cad6f823aeb7bf.tar.gz |
Fixed #27967 -- Fixed KeyError in admin's inline form with inherited non-editable pk.
Thanks Robin Anupol for the initial report and workaround.
Diffstat (limited to 'tests/admin_inlines')
-rw-r--r-- | tests/admin_inlines/admin.py | 14 | ||||
-rw-r--r-- | tests/admin_inlines/models.py | 4 | ||||
-rw-r--r-- | tests/admin_inlines/tests.py | 17 |
3 files changed, 30 insertions, 5 deletions
diff --git a/tests/admin_inlines/admin.py b/tests/admin_inlines/admin.py index f9e50d1b91..4a34d65d83 100644 --- a/tests/admin_inlines/admin.py +++ b/tests/admin_inlines/admin.py @@ -5,10 +5,10 @@ from .models import ( Author, BinaryTree, CapoFamiglia, Chapter, ChildModel1, ChildModel2, Consigliere, EditablePKBook, ExtraTerrestrial, Fashionista, Holder, Holder2, Holder3, Holder4, Inner, Inner2, Inner3, Inner4Stacked, - Inner4Tabular, NonAutoPKBook, Novel, ParentModelWithCustomPk, Poll, - Profile, ProfileCollection, Question, ReadOnlyInline, ShoppingWeakness, - Sighting, SomeChildModel, SomeParentModel, SottoCapo, Title, - TitleCollection, + Inner4Tabular, NonAutoPKBook, NonAutoPKBookChild, Novel, + ParentModelWithCustomPk, Poll, Profile, ProfileCollection, Question, + ReadOnlyInline, ShoppingWeakness, Sighting, SomeChildModel, + SomeParentModel, SottoCapo, Title, TitleCollection, ) site = admin.AdminSite(name="admin") @@ -23,6 +23,11 @@ class NonAutoPKBookTabularInline(admin.TabularInline): classes = ('collapse',) +class NonAutoPKBookChildTabularInline(admin.TabularInline): + model = NonAutoPKBookChild + classes = ('collapse',) + + class NonAutoPKBookStackedInline(admin.StackedInline): model = NonAutoPKBook classes = ('collapse',) @@ -40,6 +45,7 @@ class AuthorAdmin(admin.ModelAdmin): inlines = [ BookInline, NonAutoPKBookTabularInline, NonAutoPKBookStackedInline, EditablePKBookTabularInline, EditablePKBookStackedInline, + NonAutoPKBookChildTabularInline, ] diff --git a/tests/admin_inlines/models.py b/tests/admin_inlines/models.py index 2c2601961e..e23ea6d8f6 100644 --- a/tests/admin_inlines/models.py +++ b/tests/admin_inlines/models.py @@ -56,6 +56,10 @@ class NonAutoPKBook(models.Model): super().save(*args, **kwargs) +class NonAutoPKBookChild(NonAutoPKBook): + pass + + class EditablePKBook(models.Model): manual_pk = models.IntegerField(primary_key=True) author = models.ForeignKey(Author, models.CASCADE) diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py index 20fa9c0241..13b179fc15 100644 --- a/tests/admin_inlines/tests.py +++ b/tests/admin_inlines/tests.py @@ -355,6 +355,21 @@ class TestInline(TestDataMixin, TestCase): html=True ) + def test_inline_nonauto_noneditable_inherited_pk(self): + response = self.client.get(reverse('admin:admin_inlines_author_add')) + self.assertContains( + response, + '<input id="id_nonautopkbookchild_set-0-nonautopkbook_ptr" ' + 'name="nonautopkbookchild_set-0-nonautopkbook_ptr" type="hidden" />', + html=True + ) + self.assertContains( + response, + '<input id="id_nonautopkbookchild_set-2-nonautopkbook_ptr" ' + 'name="nonautopkbookchild_set-2-nonautopkbook_ptr" type="hidden" />', + html=True + ) + def test_inline_editable_pk(self): response = self.client.get(reverse('admin:admin_inlines_author_add')) self.assertContains( @@ -886,7 +901,7 @@ class SeleniumTests(AdminSeleniumTestCase): # One field is in a stacked inline, other in a tabular one. test_fields = ['#id_nonautopkbook_set-0-title', '#id_nonautopkbook_set-2-0-title'] show_links = self.selenium.find_elements_by_link_text('SHOW') - self.assertEqual(len(show_links), 2) + self.assertEqual(len(show_links), 3) for show_index, field_name in enumerate(test_fields, 0): self.wait_until_invisible(field_name) show_links[show_index].click() |