Django Modeltranslation: класс TranslationAdmin не копирует правильный виджет
Я использую пользовательскую форму для модели администратора django с переведенными полями. Но виджет формы не используется. Мой код:
models.py
class Fact(models.Model):
heading = models.CharField(max_length=200)
translation.py
class FactTranslationOptions(TranslationOptions):
fields = ('heading')
translator.register(Fact, FactTranslationOptions)
admin.py
class FactForm(forms.ModelForm):
class Meta:
model = Fact
widgets = {
'heading': forms.Textarea
}
class FactAdmin(translationadmin.TranslationAdmin):
form = FactForm
admin.site.register(Fact, FactAdmin)
С этим кодом заголовок поля не отображается как текстовое поле. Это поле ввода по умолчанию.
Когда я изменяю FactForm на:
class FactForm(ProductDataInlineFormBase):
class Meta:
model = Fact
widgets = {
'heading_de': forms.Textarea,
'heading_en': forms.Textarea
}
виджет textarea используется.
Я делаю что-то не так, или это ошибка в переводе модели Django?
1 ответ
Мой обходной путь, пока это не исправлено:
def helper_get_translated_widgets(field_names, widget):
widgets = {}
for name in field_names:
for key, value in settings.LANGUAGES:
widgets["{}_{}".format(name, key)] = widget
return widgets
class FactForm(ProductDataInlineFormBase):
class Meta:
model = Fact
widgets = {
**helper_get_translated_widgets(["text"], TinyMCE(mce_attrs=settings.TINYMCE_TABLE_CONFIG)),
**helper_get_translated_widgets(["heading"], forms.Textarea),
}