mirror of
https://github.com/Hopiu/django-modeltranslation.git
synced 2026-05-09 22:04:48 +00:00
Merge pull request #470 from chubz/master
fix: copy form defined widget attrs
This commit is contained in:
commit
1a17f995cd
2 changed files with 35 additions and 0 deletions
|
|
@ -66,6 +66,12 @@ class TranslationBaseModelAdmin(BaseModelAdmin):
|
|||
else:
|
||||
orig_formfield = self.formfield_for_dbfield(orig_field, **kwargs)
|
||||
field.widget = deepcopy(orig_formfield.widget)
|
||||
# if any widget attrs are defined on the form they should be copied
|
||||
try:
|
||||
field.widget = deepcopy(self.form._meta.widgets[orig_field.name])
|
||||
except (AttributeError, TypeError, KeyError):
|
||||
pass
|
||||
# field.widget = deepcopy(orig_formfield.widget)
|
||||
if orig_field.name in self.both_empty_values_fields:
|
||||
from modeltranslation.forms import NullableField, NullCharField
|
||||
form_class = field.__class__
|
||||
|
|
|
|||
|
|
@ -2200,6 +2200,35 @@ class TranslationAdminTest(ModeltranslationTestBase):
|
|||
self.assertEqual(
|
||||
tuple(ma.get_form(request, self.test_obj).base_fields.keys()), tuple(fields))
|
||||
|
||||
def test_model_form_widgets(self):
|
||||
class TestModelForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = models.TestModel
|
||||
fields = ['text', ]
|
||||
widgets = {
|
||||
'text': forms.Textarea(attrs={'myprop': 'myval'}),
|
||||
}
|
||||
|
||||
class TestModelAdmin(admin.TranslationAdmin):
|
||||
form = TestModelForm
|
||||
|
||||
ma = TestModelAdmin(models.TestModel, self.site)
|
||||
fields = ['text_de', 'text_en']
|
||||
self.assertEqual(
|
||||
tuple(ma.get_form(request).base_fields.keys()), tuple(fields))
|
||||
self.assertEqual(
|
||||
tuple(ma.get_form(request, self.test_obj).base_fields.keys()), tuple(fields))
|
||||
|
||||
for field in fields:
|
||||
self.assertIn(
|
||||
'myprop',
|
||||
ma.get_form(request).base_fields.get(field).widget.attrs.keys()
|
||||
)
|
||||
self.assertIn(
|
||||
'myval',
|
||||
ma.get_form(request, self.test_obj).base_fields.get(field).widget.attrs.values()
|
||||
)
|
||||
|
||||
def test_inline_fieldsets(self):
|
||||
class DataInline(admin.TranslationStackedInline):
|
||||
model = models.DataModel
|
||||
|
|
|
|||
Loading…
Reference in a new issue