Django管理员 - 重写已注册的模型 [英] Django admin - override already registered model
问题描述
我需要覆盖 django-eav 应用程序管理类。在 eav / admin.py
中注册了模型: admin.site.register(Value)
。我需要将 list_display 添加到此模型中。我知道修改安装的应用程序代码是不好的做法,所以我需要覆盖它。但是,不知道如何。在我自己的 app / admin.py
我有:
I need to override django-eav app admin class. In eav/admin.py
model is registered: admin.site.register(Value)
. I need to add list_display to this model. I know that it is bad practise to modify installed app code, so i need to override it. But, not sure how. In my own app/admin.py
i have:
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)
,还有错误:已经注册:模型值已经注册了< STRONG>。如何克服这个问题?
This gives me an error: NotRegistered: The model Value is not registered.
If i try to comment this line: admin.site.unregister(Value)
, also error: AlreadyRegistered: The model Value is already registered. How can i overcome this problem?
推荐答案
Django应用程序按 INSTALLED_APPS中列出的顺序加载
在您的 settings.py
中。因此,您的应用程序
必须在 django-eav
之后才能取消注册:
Django apps are loaded in the order they are listed in INSTALLED_APPS
in your settings.py
. Therefore your app
must come after django-eav
to be able to unregister it:
INSTALLED_APPS = [...
'django-eav',
...
'my_app',
]
通常你的应用程序必须来自内置和第三方应用程序。您必须测试您的项目,以便在更改订单后看是否一切顺利。
Usually your apps must come after built-in and 3rd party apps. You have to test your project to see if everything works smoothly after changing the order.
这篇关于Django管理员 - 重写已注册的模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!