【问题标题】:ModelTranslation, Django Admin and WidgetsModelTranslation、Django 管理和小部件
【发布时间】:2014-11-06 12:16:26
【问题描述】:

我正在使用 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

根据documentation of django-modeltranslation 关于这个案例的说法,这是正确的做法。

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

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

【问题讨论】:

    标签: python django python-3.x django-modeltranslation


    【解决方案1】:

    注意正确覆盖ModelAdmin 类的formfield_for_dbfield 方法。看起来您错过了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)
    

    【讨论】:

      猜你喜欢
      • 2011-06-21
      • 2011-10-09
      • 2012-02-14
      • 2018-02-09
      • 2013-05-15
      • 2015-09-22
      • 2011-05-19
      • 2019-10-05
      • 2021-09-06
      相关资源
      最近更新 更多