diff options
| author | Tim Graham <timograham@gmail.com> | 2013-08-29 09:39:31 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2013-08-29 09:45:02 -0400 |
| commit | ef1259342b46cd4b63678a4acddf2a2b631d342c (patch) | |
| tree | c4039f15e8349cafd7262011586faf67b7255868 /tests/admin_views | |
| parent | 58157be5ad31b42a1dc73e357cfdece02fd0b6ee (diff) | |
[1.6.x] Fixed #16433 -- Fixed a help_text/read only field interaction that caused an admin crash.
Thanks chris at cogdon.org for the report and admackin for the patch.
Backport of af953c45cc from master
Diffstat (limited to 'tests/admin_views')
| -rw-r--r-- | tests/admin_views/admin.py | 6 | ||||
| -rw-r--r-- | tests/admin_views/models.py | 2 | ||||
| -rw-r--r-- | tests/admin_views/tests.py | 13 |
3 files changed, 18 insertions, 3 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py index 039abb819b..b31c5b59e4 100644 --- a/tests/admin_views/admin.py +++ b/tests/admin_views/admin.py @@ -450,6 +450,10 @@ class GadgetAdmin(admin.ModelAdmin): return CustomChangeList +class ToppingAdmin(admin.ModelAdmin): + readonly_fields = ('pizzas',) + + class PizzaAdmin(admin.ModelAdmin): readonly_fields = ('toppings',) @@ -755,7 +759,7 @@ site.register(Book, inlines=[ChapterInline]) site.register(Promo) site.register(ChapterXtra1, ChapterXtra1Admin) site.register(Pizza, PizzaAdmin) -site.register(Topping) +site.register(Topping, ToppingAdmin) site.register(Album, AlbumAdmin) site.register(Question) site.register(Answer) diff --git a/tests/admin_views/models.py b/tests/admin_views/models.py index 9a7f0ff30e..f92b3a1a24 100644 --- a/tests/admin_views/models.py +++ b/tests/admin_views/models.py @@ -495,7 +495,7 @@ class Topping(models.Model): class Pizza(models.Model): name = models.CharField(max_length=20) - toppings = models.ManyToManyField('Topping') + toppings = models.ManyToManyField('Topping', related_name='pizzas') class Album(models.Model): diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 3c276199ff..28dea38cfd 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -49,7 +49,7 @@ from .models import (Article, BarAccount, CustomArticle, EmptyModel, FooAccount, OtherStory, ComplexSortedPerson, PluggableSearchPerson, Parent, Child, AdminOrderedField, AdminOrderedModelMethod, AdminOrderedAdminMethod, AdminOrderedCallable, Report, MainPrepopulated, RelatedPrepopulated, UnorderedObject, - Simple, UndeletableObject, Choice, ShortMessage, Telegram) + Simple, UndeletableObject, Choice, ShortMessage, Telegram, Pizza, Topping) from .admin import site, site2 @@ -3559,6 +3559,17 @@ class ReadonlyTest(TestCase): self.assertContains(response, '<p>No opinion</p>', html=True) self.assertNotContains(response, '<p>(None)</p>') + def test_readonly_backwards_ref(self): + """ + Regression test for #16433 - backwards references for related objects + broke if the related field is read-only due to the help_text attribute + """ + topping = Topping.objects.create(name='Salami') + pizza = Pizza.objects.create(name='Americano') + pizza.toppings.add(topping) + response = self.client.get('/test_admin/admin/admin_views/topping/add/') + self.assertEqual(response.status_code, 200) + @override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) class RawIdFieldsTest(TestCase): |
