模型翻译、Django Admin 和小部件
我正在使用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管理后台中使用modeltranslation的字段控件的例子……谢谢! :)
使用的Django版本是1.6.7,django-modeltranslation版本是0.7.3
1 个回答
2
注意要正确地重写你在 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)