summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy McCurrach <tim.mccurrach@gmail.com>2021-01-15 14:32:54 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-01-18 08:12:19 +0100
commit0aff3fd7110d1bd431a35bb28d8688693b98d886 (patch)
tree22b90ae3b3ab203dff9e97b52744c713415c847d
parent13409a0c0db0ae322d58a1fceef678f8bca067fb (diff)
Fixed #18549 -- Fixed heading for inlines with a OneToOneField.
Used verbose_name instead of verbose_name_plural.
-rw-r--r--django/contrib/admin/templates/admin/edit_inline/stacked.html6
-rw-r--r--django/contrib/admin/templates/admin/edit_inline/tabular.html6
-rw-r--r--tests/admin_inlines/admin.py13
-rw-r--r--tests/admin_inlines/models.py1
-rw-r--r--tests/admin_inlines/tests.py5
5 files changed, 27 insertions, 4 deletions
diff --git a/django/contrib/admin/templates/admin/edit_inline/stacked.html b/django/contrib/admin/templates/admin/edit_inline/stacked.html
index 0292c6ef99..25b7b58e4e 100644
--- a/django/contrib/admin/templates/admin/edit_inline/stacked.html
+++ b/django/contrib/admin/templates/admin/edit_inline/stacked.html
@@ -4,7 +4,11 @@
data-inline-type="stacked"
data-inline-formset="{{ inline_admin_formset.inline_formset_data }}">
<fieldset class="module {{ inline_admin_formset.classes }}">
- <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
+ {% if inline_admin_formset.formset.max_num == 1 %}
+ <h2>{{ inline_admin_formset.opts.verbose_name|capfirst }}</h2>
+ {% else %}
+ <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
+ {% endif %}
{{ inline_admin_formset.formset.management_form }}
{{ inline_admin_formset.formset.non_form_errors }}
diff --git a/django/contrib/admin/templates/admin/edit_inline/tabular.html b/django/contrib/admin/templates/admin/edit_inline/tabular.html
index c19d284062..7a4e7cb226 100644
--- a/django/contrib/admin/templates/admin/edit_inline/tabular.html
+++ b/django/contrib/admin/templates/admin/edit_inline/tabular.html
@@ -5,7 +5,11 @@
<div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
{{ inline_admin_formset.formset.management_form }}
<fieldset class="module {{ inline_admin_formset.classes }}">
- <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
+ {% if inline_admin_formset.formset.max_num == 1 %}
+ <h2>{{ inline_admin_formset.opts.verbose_name|capfirst }}</h2>
+ {% else %}
+ <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
+ {% endif %}
{{ inline_admin_formset.formset.non_form_errors }}
<table>
<thead><tr>
diff --git a/tests/admin_inlines/admin.py b/tests/admin_inlines/admin.py
index 5c968870e4..50266308e1 100644
--- a/tests/admin_inlines/admin.py
+++ b/tests/admin_inlines/admin.py
@@ -9,8 +9,8 @@ from .models import (
Holder, Holder2, Holder3, Holder4, Holder5, Inner, Inner2, Inner3,
Inner4Stacked, Inner4Tabular, Inner5Stacked, Inner5Tabular, NonAutoPKBook,
NonAutoPKBookChild, Novel, NovelReadonlyChapter, OutfitItem,
- ParentModelWithCustomPk, Poll, Profile, ProfileCollection, Question,
- ReadOnlyInline, ShoppingWeakness, Sighting, SomeChildModel,
+ ParentModelWithCustomPk, Person, Poll, Profile, ProfileCollection,
+ Question, ReadOnlyInline, ShoppingWeakness, Sighting, SomeChildModel,
SomeParentModel, SottoCapo, Teacher, Title, TitleCollection,
)
@@ -292,6 +292,14 @@ class TeacherAdmin(admin.ModelAdmin):
inlines = [StudentInline]
+class AuthorTabularInline(admin.TabularInline):
+ model = Author
+
+
+class FashonistaStackedInline(admin.StackedInline):
+ model = Fashionista
+
+
site.register(TitleCollection, inlines=[TitleInline])
# Test bug #12561 and #12778
# only ModelAdmin media
@@ -318,3 +326,4 @@ site.register([Question, Inner4Stacked, Inner4Tabular])
site.register(Teacher, TeacherAdmin)
site.register(Chapter, inlines=[FootNoteNonEditableInlineCustomForm])
site.register(OutfitItem, inlines=[WeaknessInlineCustomForm])
+site.register(Person, inlines=[AuthorTabularInline, FashonistaStackedInline])
diff --git a/tests/admin_inlines/models.py b/tests/admin_inlines/models.py
index 501020f188..241eceebb2 100644
--- a/tests/admin_inlines/models.py
+++ b/tests/admin_inlines/models.py
@@ -44,6 +44,7 @@ class Book(models.Model):
class Author(models.Model):
name = models.CharField(max_length=50)
books = models.ManyToManyField(Book)
+ person = models.OneToOneField('Person', models.CASCADE, null=True)
class NonAutoPKBook(models.Model):
diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py
index c71bf1efed..7af6972585 100644
--- a/tests/admin_inlines/tests.py
+++ b/tests/admin_inlines/tests.py
@@ -485,6 +485,11 @@ class TestInline(TestDataMixin, TestCase):
self.assertContains(response, '<h2>Inner4 stackeds</h2>', html=True)
self.assertContains(response, '<h2>Inner4 tabulars</h2>', html=True)
+ def test_inlines_singular_heading_one_to_one(self):
+ response = self.client.get(reverse('admin:admin_inlines_person_add'))
+ self.assertContains(response, '<h2>Author</h2>', html=True) # Tabular.
+ self.assertContains(response, '<h2>Fashionista</h2>', html=True) # Stacked.
+
@override_settings(ROOT_URLCONF='admin_inlines.urls')
class TestInlineMedia(TestDataMixin, TestCase):