mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #12475 -- Fixed an edge case with hidden fields in ModelAdmin changelists when used in conjunction with list_display_links or list_editable. Thanks, Simon Meers, Julien Phalip, Karen and master.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15722 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -36,7 +36,7 @@ from models import (Article, BarAccount, CustomArticle, EmptyModel,
|
||||
Language, Collector, Widget, Grommet, DooHickey, FancyDoodad, Whatsit,
|
||||
Category, Post, Plot, FunkyTag, Chapter, Book, Promo, WorkHour, Employee,
|
||||
Question, Answer, Inquisition, Actor, FoodDelivery,
|
||||
RowLevelChangePermissionModel, Paper, CoverLetter)
|
||||
RowLevelChangePermissionModel, Paper, CoverLetter, Story, OtherStory)
|
||||
|
||||
|
||||
class AdminViewBasicTest(TestCase):
|
||||
@@ -1678,6 +1678,36 @@ class AdminViewListEditable(TestCase):
|
||||
response = self.client.get('/test_admin/admin/admin_views/person/?%s' % IS_POPUP_VAR)
|
||||
self.assertEqual(response.context['cl'].list_editable, ())
|
||||
|
||||
def test_pk_hidden_fields(self):
|
||||
""" Ensure that hidden pk fields aren't displayed in the table body and
|
||||
that their corresponding human-readable value is displayed instead.
|
||||
Note that the hidden pk fields are in fact be displayed but
|
||||
separately (not in the table), and only once.
|
||||
Refs #12475.
|
||||
"""
|
||||
Story.objects.create(title='The adventures of Guido', content='Once upon a time in Djangoland...')
|
||||
Story.objects.create(title='Crouching Tiger, Hidden Python', content='The Python was sneaking into...')
|
||||
response = self.client.get('/test_admin/admin/admin_views/story/')
|
||||
self.assertContains(response, 'id="id_form-0-id"', 1) # Only one hidden field, in a separate place than the table.
|
||||
self.assertContains(response, 'id="id_form-1-id"', 1)
|
||||
self.assertContains(response, '<div class="hiddenfields">\n<input type="hidden" name="form-0-id" value="2" id="id_form-0-id" /><input type="hidden" name="form-1-id" value="1" id="id_form-1-id" />\n</div>')
|
||||
self.assertContains(response, '<td>1</td>', 1)
|
||||
self.assertContains(response, '<td>2</td>', 1)
|
||||
|
||||
def test_pk_hidden_fields_with_list_display_links(self):
|
||||
""" Similarly as test_pk_hidden_fields, but when the hidden pk fields are
|
||||
referenced in list_display_links.
|
||||
Refs #12475.
|
||||
"""
|
||||
OtherStory.objects.create(title='The adventures of Guido', content='Once upon a time in Djangoland...')
|
||||
OtherStory.objects.create(title='Crouching Tiger, Hidden Python', content='The Python was sneaking into...')
|
||||
response = self.client.get('/test_admin/admin/admin_views/otherstory/')
|
||||
self.assertContains(response, 'id="id_form-0-id"', 1) # Only one hidden field, in a separate place than the table.
|
||||
self.assertContains(response, 'id="id_form-1-id"', 1)
|
||||
self.assertContains(response, '<div class="hiddenfields">\n<input type="hidden" name="form-0-id" value="2" id="id_form-0-id" /><input type="hidden" name="form-1-id" value="1" id="id_form-1-id" />\n</div>')
|
||||
self.assertContains(response, '<th><a href="1/">1</a></th>', 1)
|
||||
self.assertContains(response, '<th><a href="2/">2</a></th>', 1)
|
||||
|
||||
|
||||
class AdminSearchTest(TestCase):
|
||||
fixtures = ['admin-views-users', 'multiple-child-classes',
|
||||
|
||||
Reference in New Issue
Block a user