我正在使用带有翻译字段的 django 管理模型的自定义表单。但没有使用表单的小部件。我的代码:
模型.py
class Fact(models.Model):
heading = models.CharField(max_length=200)
翻译.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
}
使用了文本区域小部件。
我做错了什么,还是这是 django modeltranslation 中的错误?
最佳答案
解决此问题之前我的解决方法:
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),
}
关于Django 模型翻译 : TranslationAdmin class does not copy the correct widget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48687874/