diff --git a/django/contrib/admin/static/admin/css/base.css b/django/contrib/admin/static/admin/css/base.css
index 23fddaf..210e969 100644
--- a/django/contrib/admin/static/admin/css/base.css
+++ b/django/contrib/admin/static/admin/css/base.css
@@ -303,6 +303,10 @@ tr.alt {
     background: white;
 }
 
+th img.help-text-tooltip {
+    cursor: help;
+}
+
 /* SORTABLE TABLES */
 
 thead th a:link, thead th a:visited {
diff --git a/django/contrib/admin/static/admin/img/icon_help.gif b/django/contrib/admin/static/admin/img/icon_help.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d7f013c99329f4e8af52025ab182baf0e0259fc6
GIT binary patch
diff --git a/django/contrib/admin/templates/admin/edit_inline/tabular.html b/django/contrib/admin/templates/admin/edit_inline/tabular.html
index 29db95a..b2970c6 100644
--- a/django/contrib/admin/templates/admin/edit_inline/tabular.html
+++ b/django/contrib/admin/templates/admin/edit_inline/tabular.html
@@ -9,7 +9,10 @@
      <thead><tr>
      {% for field in inline_admin_formset.fields %}
        {% if not field.widget.is_hidden %}
-         <th{% if forloop.first %} colspan="2"{% endif %}{% if field.required %} class="required"{% endif %}>{{ field.label|capfirst }}</th>
+         <th{% if forloop.first %} colspan="2"{% endif %}{% if field.required %} class="required"{% endif %}>
+            {{ field.label|capfirst }}
+            {% if field.help_text %}&nbsp;<img class="help-text-tooltip" src="{% static "admin/img/icon_help.gif" %}" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}" />{% endif %}
+         </th>
        {% endif %}
      {% endfor %}
      {% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %}
diff --git a/tests/regressiontests/admin_inlines/models.py b/tests/regressiontests/admin_inlines/models.py
index ee0abd1..8d9ca7c 100644
--- a/tests/regressiontests/admin_inlines/models.py
+++ b/tests/regressiontests/admin_inlines/models.py
@@ -103,6 +103,32 @@ admin.site.register(Holder2, HolderAdmin, inlines=[InnerInline2])
 # only Inline media
 admin.site.register(Holder3, inlines=[InnerInline3])
 
+
+# Models for ticket #8190
+
+class Holder4(models.Model):
+    dummy = models.IntegerField()
+
+class Inner4Stacked(models.Model):
+    dummy = models.IntegerField(help_text="Awesome stacked help text is awesome.")
+    holder = models.ForeignKey(Holder4)
+
+class Inner4Tabular(models.Model):
+    dummy = models.IntegerField(help_text="Awesome tabular help text is awesome.")
+    holder = models.ForeignKey(Holder4)
+
+class Inner4StackedInline(admin.StackedInline):
+    model = Inner4Stacked
+
+class Inner4TabularInline(admin.TabularInline):
+    model = Inner4Tabular
+
+class Holder4Admin(admin.ModelAdmin):
+    inlines = [Inner4StackedInline, Inner4TabularInline]
+
+admin.site.register(Holder4, Holder4Admin)
+
+
 # Models for #12749
 
 class Person(models.Model):
diff --git a/tests/regressiontests/admin_inlines/tests.py b/tests/regressiontests/admin_inlines/tests.py
index 067b3c5..a3223f1 100644
--- a/tests/regressiontests/admin_inlines/tests.py
+++ b/tests/regressiontests/admin_inlines/tests.py
@@ -103,6 +103,16 @@ class TestInline(TestCase):
         # column cells
         self.assertContains(response, '<p>Callable in QuestionInline</p>')
 
+    def test_help_text(self):
+        """
+        Ensure that the inlines' model field help texts are displayed when
+        using both the stacked and tabular layouts.
+        Ref #8190.
+        """
+        response = self.client.get('/test_admin/admin/admin_inlines/holder4/add/')
+        self.assertContains(response, '<p class="help">Awesome stacked help text is awesome.</p>', 4)
+        self.assertContains(response, '<img class="help-text-tooltip" src="/static/admin/img/icon_help.gif" alt="(Awesome tabular help text is awesome.)" title="Awesome tabular help text is awesome." />', 1)
+
 class TestInlineMedia(TestCase):
     fixtures = ['admin-views-users.xml']
 
