有没有办法扩展另一个应用程序ModelAdmin?Django - 扩展另一个应用程序ModelAdmin?
我有一个使用django.contrib.comments提供的功能的项目。
的CommentsAdmin的ModelAdmin类有:
actions = ["flag_comments", "approve_comments", "remove_comments"]
我想在我的项目延长CommentsAdmin的ModelAdmin包括动作ban_user
。
我试过在我的admin.py文件中创建自己的NewCommentsAdmin(CommentsAdmin)
对象并注册它,但我收到一条通知'AlreadyRegistered at /admin/' 'The model Comment is already registered'
。
class NewCommentAdmin(CommentAdmin):
actions = ['ban_user']
def ban_user(self, request, queryset):
pass
admin.site.register(Comment, NewCommentAdmin)
有没有办法做到这一点,而无需修改原来的django.contrib.comments代码?
恩,这比需要的复杂得多。只需导入CommentAdmin,对其进行子类化,取消一次注册,并注册您的版本。 – 2010-01-31 16:30:22
@Carl Meyer:你确定吗?我试图让Geodjango的地图小部件在前端工作。为此,我需要导入在我的'admin.py'文件中定义的自定义AdminModel。当我导入这个类时,'admin.site.register'函数再次被执行。这是我的观点。当您尝试导入类时,它会尝试再次注册该模型。你有没有得到它与成功?如果有另一个解决方案,我很高兴在这里。 – 2010-01-31 16:40:06
如果通过两个不同路径导入模块,则模块级代码只执行两次。通常这不应该发生。我不知道GeoDjango是否做了一些有趣的事情,从未使用它。请参阅我的答案,了解我正在制作的简单版本。 – 2010-01-31 16:47:18