我正在使用带有翻译字段的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)
使用此代码,字段标题不会显示为textarea。它是默认的输入字段。
当我将FactForm更改为:
时class FactForm(ProductDataInlineFormBase):
class Meta:
model = Fact
widgets = {
'heading_de': forms.Textarea,
'heading_en': forms.Textarea
}
使用textarea小部件。
我做错了什么,或者这是django modeltranslation中的错误?
答案 0 :(得分:0)
我的解决方法直到修复:
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),
}