我正在使用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
答案 0 :(得分: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)