当django的自定义操作不按预期运行时如何通知用户?

时间:2010-02-15 09:58:51

标签: python django django-admin

我正在为django admin编写自定义操作。此操作仅适用于具有特定状态的记录。

例如,“批准博客”自定义操作应仅在博客未获批准时批准用户博客。 并且一定不能拒绝被拒绝的博客

一种选择是过滤未批准的博客,然后批准它们。但仍然有机会拒绝批准博客。

如果用户尝试批准被拒绝的博客,则自定义操作应该通知用户django admin中的无效操作。

任何解决方案?

1 个答案:

答案 0 :(得分:0)

有关管理操作的文档非常有用,请转到take a look

我认为只编写一个只会更新未被拒绝的博客的动作。

以下代码假设您有变量rejectedapproved,它们映射到代表已被拒绝的博客的整数值,以及分别获得批准的博客:

class BlogAdmin(admin.ModelAdmin):

    ...
    actions = ['approve']
    ...

    def approve(self, request, queryset):
        rejects = queryset.filter(state = rejected)
        if len(rejects) != 0:
            # You might want to raise an exception here, or notify yourself somehow
            self.message_user(request,
                              "%s of the blogs you selected were already rejected." % len(rejects))
            return

        rows_updated = queryset.update(state = approved)
        self.message_user(request, "%s blogs approved." % rows_updated)
    approve.short_description = "Mark selected blogs as approved"