Django admin - 覆盖已注册的模型

时间:2016-03-02 07:54:00

标签: python django

我需要覆盖django-eav应用管理员类。在eav/admin.py模型中已注册:admin.site.register(Value)。我需要将 list_display 添加到此模型中。我知道修改已安装的应用程序代码是不好的做法,所以我需要覆盖它。但是,不知道如何。在我自己的app/admin.py我有:

class EavValueAdmin(ModelAdmin):
    list_display = ('__unicode__', 'value_text', )

#unregistering class from eav.admin
admin.site.unregister(Value)
admin.site.register(Value, EavValueAdmin)

这给了我一个错误: NotRegistered:模型值未注册。 如果我尝试对此行发表评论:admin.site.unregister(Value),也会出错: AlreadyRegistered:模型值已注册。我怎样才能克服这个问题?

1 个答案:

答案 0 :(得分:6)

Django应用按照INSTALLED_APPS settings.py中列出的顺序加载。因此,app必须在django-eav之后才能取消注册:

INSTALLED_APPS = [...
   'django-eav',
   ...
   'my_app',
]

通常,您的应用必须来自内置和第三方应用。在更改订单后,您必须测试项目以确定一切是否顺利进行。