diff --git a/django/contrib/admindocs/templates/admin_doc/model_index.html b/django/contrib/admindocs/templates/admin_doc/model_index.html
index f48f80dd9f..4b897c318b 100644
--- a/django/contrib/admindocs/templates/admin_doc/model_index.html
+++ b/django/contrib/admindocs/templates/admin_doc/model_index.html
@@ -17,12 +17,12 @@
 
 <h1>{% trans 'Model documentation' %}</h1>
 
-{% regroup models by app_label as grouped_models %}
+{% regroup models by app_config as grouped_models %}
 
 <div id="content-main">
 {% for group in grouped_models %}
 <div class="module">
-<h2 id="app-{{ group.grouper }}">{{ group.grouper|capfirst }}</h2>
+<h2 id="app-{{ group.grouper.label }}">{{ group.grouper.verbose_name }} ({{ group.grouper.name }})</h2>
 
 <table class="xfull">
 {% for model in group.list %}
@@ -42,9 +42,9 @@
 <div class="module">
 <h2>{% trans 'Model groups' %}</h2>
 <ul>
-{% regroup models by app_label as grouped_models %}
+{% regroup models by app_config as grouped_models %}
 {% for group in grouped_models %}
-    <li><a href="#app-{{ group.grouper }}">{{ group.grouper|capfirst }}</a></li>
+    <li><a href="#app-{{ group.grouper.label }}">{{ group.grouper.verbose_name }}</a></li>
 {% endfor %}
 </ul>
 </div>
diff --git a/tests/admin_docs/tests.py b/tests/admin_docs/tests.py
index 6eecb6af62..993567bf37 100644
--- a/tests/admin_docs/tests.py
+++ b/tests/admin_docs/tests.py
@@ -81,7 +81,11 @@ class AdminDocViewTests(TestCase):
 
     def test_model_index(self):
         response = self.client.get(reverse('django-admindocs-models-index'))
-        self.assertContains(response, '<h2 id="app-auth">Auth</h2>', html=True)
+        self.assertContains(
+            response,
+            '<h2 id="app-auth">Authentication and Authorization (django.contrib.auth)</h2>',
+            html=True
+        )
 
     def test_template_detail(self):
         response = self.client.get(reverse('django-admindocs-templates',