将django操作添加到已安装的应用程序

时间:2016-07-08 09:11:44

标签: python django

有没有什么好方法可以为安装的应用管理员添加自定义操作?我不想要管理员表格的子类。此外,我不想修改原始应用程序代码。也许为课堂做贡献会有用吗?这种情况好吗?

2 个答案:

答案 0 :(得分:1)

添加自定义管理操作很容易,只需像查询集一样处理更新:

class CustomerAdmin(admin.ModelAdmin):
    list_display = ['name', 'age', 'status']
    actions = ['change_name_action']

    def change_name_action(self, request, queryset):
        queryset.update(status='gold')
    change_published.short_description = 'Change status for selected customers'

如果你想对admin中的任何模型使用action,你可以将action作为函数编写,并在网站范围内添加,如下所示:

from django.contrib import admin

admin.site.add_action(change_name_action)

更高级用法read the docst

答案 1 :(得分:0)

解决了,但不确定这是否正确。

def send_newsletter(modeladmin, request, queryset):
        #do stuff

from djangocms_blog.admin import PostAdmin
setattr(PostAdmin, 'actions', [send_newsletter])