首页 > 解决方案 > 覆盖 formfield_for_dbfield 的 Django 管理类 - 错误

问题描述

我的 django 网站上有一堆 FlatPages,我想使用 django-modeltranslations pacakge 从管理员那里翻译不同语言的内容。这是我的代码:

class TinyMCEFlatPageAdmin(FlatPageAdmin):    
    def formfield_for_dbfield(self, db_field, **kwargs):
        if db_field.name.startswith('content'):
            return db_field.formfield(widget=TinyMCE(attrs={'cols': 80, 'rows': 30},))
        return super().formfield_for_dbfield(db_field, **kwargs)

基本上,我从默认的 FlatPageAdmin 创建了一个 TinyMCEFlatPageAdmin 类,以在管理站点上以 HTML 格式显示 Flatpage 内容。就翻译而言,我添加了以下代码:

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

然后我注册了新的 MyTranslatedFlatPageAdmin 类:

admin.site.unregister(FlatPage)
admin.site.register(FlatPage, MyTranslatedFlatPageAdmin)

当我登录到平面内容页面时,我收到以下错误:

formfield_for_dbfield() takes 2 positional arguments but 3 were given

我正在努力找出原因,因为一切似乎对我来说都是正确的。在此先感谢您的帮助

标签: djangopython-3.xdjango-modeltranslation

解决方案


我通过降级到版本 0.13.1 来修复它。软件包的 0.15.0 版本似乎存在错误。


推荐阅读