有沒有辦法擴展另一個應用程序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