diff --git a/AUTHORS b/AUTHORS
index 070ec70..844038c 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -589,6 +589,7 @@ answer newbie questions, and generally made Django that much better:
     Gasper Zejn <zejn@kiberpipa.org>
     Jarek Zgoda <jarek.zgoda@gmail.com>
     Cheng Zhang
+    Marc Aymerich Gubern
 
 A big THANK YOU goes to:
 
diff --git a/django/contrib/admin/helpers.py b/django/contrib/admin/helpers.py
index 4203287..be66b0d 100644
--- a/django/contrib/admin/helpers.py
+++ b/django/contrib/admin/helpers.py
@@ -225,6 +225,10 @@ class InlineAdminFormSet(object):
     def fields(self):
         fk = getattr(self.formset, "fk", None)
         for i, field in enumerate(flatten_fieldsets(self.fieldsets)):
+            if callable(field):
+                class_name = field.__name__ != '<lambda>' and field.__name__ or ''
+            else:
+                class_name = field
             if fk and fk.name == field:
                 continue
             if field in self.readonly_fields:
@@ -233,7 +237,8 @@ class InlineAdminFormSet(object):
                     'widget': {
                         'is_hidden': False
                     },
-                    'required': False
+                    'required': False,
+                    'help_text': help_text_for_field(class_name, self.opts.model),
                 }
             else:
                 yield self.formset.form.base_fields[field]
diff --git a/tests/regressiontests/admin_inlines/admin.py b/tests/regressiontests/admin_inlines/admin.py
index 536c3ec..d252457 100644
--- a/tests/regressiontests/admin_inlines/admin.py
+++ b/tests/regressiontests/admin_inlines/admin.py
@@ -28,6 +28,11 @@ class HolderAdmin(admin.ModelAdmin):
         js = ('my_awesome_admin_scripts.js',)
 
 
+class ROnlyInlineInline(admin.TabularInline):
+    model = ROnlyInline
+    readonly_fields = ['name']
+
+
 class InnerInline2(admin.StackedInline):
     model = Inner2
 
@@ -142,7 +147,7 @@ site.register(Novel, NovelAdmin)
 site.register(Fashionista, inlines=[InlineWeakness])
 site.register(Holder4, Holder4Admin)
 site.register(Author, AuthorAdmin)
-site.register(CapoFamiglia, inlines=[ConsigliereInline, SottoCapoInline])
+site.register(CapoFamiglia, inlines=[ConsigliereInline, SottoCapoInline, ROnlyInlineInline])
 site.register(ProfileCollection, inlines=[ProfileInline])
 site.register(ParentModelWithCustomPk, inlines=[ChildModel1Inline, ChildModel2Inline])
 site.register(ExtraTerrestrial, inlines=[SightingInline])
diff --git a/tests/regressiontests/admin_inlines/models.py b/tests/regressiontests/admin_inlines/models.py
index 147873a..ad7230c 100644
--- a/tests/regressiontests/admin_inlines/models.py
+++ b/tests/regressiontests/admin_inlines/models.py
@@ -130,7 +130,6 @@ class Novel(models.Model):
 class Chapter(models.Model):
     novel = models.ForeignKey(Novel)
 
-
 # Models for #16838
 
 class CapoFamiglia(models.Model):
@@ -138,7 +137,7 @@ class CapoFamiglia(models.Model):
 
 
 class Consigliere(models.Model):
-    name = models.CharField(max_length=100)
+    name = models.CharField(max_length=100, help_text='Help text for Consigliere')
     capo_famiglia = models.ForeignKey(CapoFamiglia, related_name='+')
 
 
@@ -146,6 +145,12 @@ class SottoCapo(models.Model):
     name = models.CharField(max_length=100)
     capo_famiglia = models.ForeignKey(CapoFamiglia, related_name='+')
 
+
+class ROnlyInline(models.Model):
+    name = models.CharField(max_length=100, help_text='Help text for ROnlyInline')
+    capo_famiglia = models.ForeignKey(CapoFamiglia)
+
+
 # Models for #18433
 
 class ParentModelWithCustomPk(models.Model):
diff --git a/tests/regressiontests/admin_inlines/tests.py b/tests/regressiontests/admin_inlines/tests.py
index 54283bf..3e3889c 100644
--- a/tests/regressiontests/admin_inlines/tests.py
+++ b/tests/regressiontests/admin_inlines/tests.py
@@ -122,6 +122,10 @@ class TestInline(TestCase):
         response = self.client.get('/admin/admin_inlines/holder4/add/')
         self.assertContains(response, '<p class="help">Awesome stacked help text is awesome.</p>', 4)
         self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Awesome tabular help text is awesome.)" title="Awesome tabular help text is awesome." />', 1)
+        # ronly fields
+        response = self.client.get('/admin/admin_inlines/capofamiglia/add/')
+        self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Help text for ROnlyInline)" title="Help text for ROnlyInline" />', 1)
+
 
     def test_non_related_name_inline(self):
         """
