【问题标题】:Django Modeltranslation: TranslationAdmin class does not copy the correct widgetDjango Modeltranslation:TranslationAdmin 类未复制正确的小部件
【发布时间】:2018-07-19 03:56:05
【问题描述】:

我正在为带有翻译字段的 django 管理模型使用自定义表单。但是没有使用表单的小部件。我的代码:

models.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)

使用此代码,字段标题不会显示为 textarea。这是一个默认输入字段。

当我将 FactForm 更改为:

class FactForm(ProductDataInlineFormBase):
    class Meta:
        model = Fact
        widgets = { 
            'heading_de': forms.Textarea,
            'heading_en': forms.Textarea
        }

使用了 textarea 小部件。

我做错了什么,或者这是 django 模型翻译中的错误?

【问题讨论】:

    标签: django django-modeltranslation


    【解决方案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),
            }
    

    【讨论】:

      猜你喜欢
      • 2014-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多