Fixed #26729 -- Allowed overriding a form field's label/help_text in Form.__init__() for TabularInline.

This commit is contained in:
Paulo 2016-06-18 22:03:25 -04:00 committed by Tim Graham
parent ea4665066b
commit 9c2d5a8d33
3 changed files with 15 additions and 1 deletions

View File

@ -279,7 +279,7 @@ class InlineAdminFormSet(object):
'help_text': help_text_for_field(field_name, self.opts.model),
}
else:
form_field = self.formset.form.base_fields[field_name]
form_field = self.formset.empty_form.fields[field_name]
label = form_field.label
if label is None:
label = label_for_field(field_name, self.opts.model, self.opts)

View File

@ -192,6 +192,10 @@ class SomeChildModelForm(forms.ModelForm):
'position': forms.HiddenInput,
}
def __init__(self, *args, **kwargs):
super(SomeChildModelForm, self).__init__(*args, **kwargs)
self.fields['name'].label = 'new label'
class SomeChildModelInline(admin.TabularInline):
model = SomeChildModel

View File

@ -95,6 +95,16 @@ class TestInline(TestDataMixin, TestCase):
response = self.client.get(reverse('admin:admin_inlines_titlecollection_add'))
self.assertContains(response, '<th class="required">Title1</th>', html=True)
def test_custom_form_tabular_inline_overridden_label(self):
"""
SomeChildModelForm.__init__() overrides the label of a form field.
That label is displayed in the TabularInline.
"""
response = self.client.get(reverse('admin:admin_inlines_someparentmodel_add'))
field = list(response.context['inline_admin_formset'].fields())[0]
self.assertEqual(field['label'], 'new label')
self.assertContains(response, '<th class="required">New label</th>', html=True)
def test_tabular_non_field_errors(self):
"""
Ensure that non_field_errors are displayed correctly, including the