Browse Source

Fixed #24976 -- Fixed missing form label in tabular inline.

If the model form had a form field specified, the label rendered
as "None".
matiasb 9 years ago
parent
commit
12aeed8c94
3 changed files with 19 additions and 1 deletions
  1. 10 1
      django/contrib/admin/helpers.py
  2. 1 0
      tests/admin_inlines/admin.py
  3. 8 0
      tests/admin_inlines/tests.py

+ 10 - 1
django/contrib/admin/helpers.py

@@ -265,7 +265,16 @@ class InlineAdminFormSet(object):
                     'help_text': help_text_for_field(field_name, self.opts.model),
                 }
             else:
-                yield self.formset.form.base_fields[field_name]
+                form_field = self.formset.form.base_fields[field_name]
+                label = form_field.label
+                if label is None:
+                    label = label_for_field(field_name, self.opts.model, self.opts)
+                yield {
+                    'label': label,
+                    'widget': form_field.widget,
+                    'required': form_field.required,
+                    'help_text': form_field.help_text,
+                }
 
     def _media(self):
         media = self.opts.media + self.formset.media

+ 1 - 0
tests/admin_inlines/admin.py

@@ -72,6 +72,7 @@ class InnerInline3(admin.StackedInline):
 
 
 class TitleForm(forms.ModelForm):
+    title1 = forms.CharField(max_length=100)
 
     def clean(self):
         cleaned_data = self.cleaned_data

+ 8 - 0
tests/admin_inlines/tests.py

@@ -97,6 +97,14 @@ class TestInline(TestDataMixin, TestCase):
         self.assertEqual(response.status_code, 302)
         self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1)
 
+    def test_custom_form_tabular_inline_label(self):
+        """
+        A model form with a form field specified (TitleForm.title1) should have
+        its label rendered in the tabular inline.
+        """
+        response = self.client.get(reverse('admin:admin_inlines_titlecollection_add'))
+        self.assertContains(response, '<th class="required">Title1</th>', html=True)
+
     def test_tabular_non_field_errors(self):
         """
         Ensure that non_field_errors are displayed correctly, including the