Django 模型翻译 : TranslationAdmin class does not copy the correct widget

标签 django django-modeltranslation

我正在使用带有翻译字段的 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/

相关文章:

python - Django 模型翻译查询回退

python - Django:创建动态表单

sql - 原始 SQL 中的主键要求使 Django 中的查询复杂化

Django 嵌套事务 - “with transaction.atomic()”

python - 如何使用 pip 安装特定版本的软件包?

python - 对于在 Django 中使用模型翻译翻译的字段,如何在 upload_to 方法中获取 FileField 的字段名?

django - Django 最好的 Wiki 解决方案是什么?

mysql - Django Postgres 聚合函数

python - django 中的模型翻译数据库出错