2

我正在使用 django-modeltranslation 来翻译我的一个模型。现在一切都很好,只是我以前的小部件不再工作了。它尝试了很多东西,包括这个:

class EmailTemplateAdmin(admin.ModelAdmin):

    def formfield_for_dbfield(self, db_field, **kwargs):
        if db_field.name == 'body':
            kwargs['body'] = TinyMCE(attrs={'cols': 80, 'rows': 30})
            return db_field.formfield(**kwargs)
        return super(EmailTemplateAdmin, self).formfield_for_dbfield(db_field, **kwargs)

class TranslatedEmailTemplateAdmin(EmailTemplateAdmin, TabbedTranslationAdmin):
    def formfield_for_dbfield(self, db_field, **kwargs):
        field = super(TranslatedEmailTemplateAdmin, self).formfield_for_dbfield(db_field, **kwargs)
        self.patch_translation_field(db_field, field, **kwargs)
        return field

根据有关此案例的 django-modeltranslation 文档,这是执行此操作的正确方法。

我并不是要为我自己的问题寻求解决方案,因为我想这可能是我自己的代码中的某些东西破坏了这个问题。我只想有一个在 django admin 中使用模型翻译的字段上使用小部件的示例......谢谢!:)

使用 Django == 1.6.7 和 django-modeltranslation==0.7.3

4

1 回答 1

2

谨防正确覆盖类的formfield_for_dbfield方法ModelAdmin。看起来你错过了和kwargs.pop('request', None)困惑kwargs['widget']kwargs['body']

这是重写的方法:

def formfield_for_dbfield(self, db_field, **kwargs):
    if db_field.name == 'body':
        kwargs.pop('request', None)
        kwargs['widget'] = TinyMCE(attrs={'cols': 80, 'rows': 30})
        return db_field.formfield(**kwargs)
    return super(EmailTemplateAdmin, self).formfield_for_dbfield(db_field, **kwargs)
于 2014-09-15T12:02:15.840 回答