gpt4 book ai didi

python - ModelTranslation、Django 管理和小部件

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:12 27 4
gpt4 key购买 nike

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

最佳答案

注意不要正确覆盖 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)

关于python - ModelTranslation、Django 管理和小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25806231/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com