我正在为django admin编写自定义操作。此操作仅适用于具有特定状态的记录。
例如,“批准博客”自定义操作应仅在博客未获批准时批准用户博客。 并且一定不能拒绝被拒绝的博客。
一种选择是过滤未批准的博客,然后批准它们。但仍然有机会拒绝批准博客。
如果用户尝试批准被拒绝的博客,则自定义操作应该通知用户django admin中的无效操作。
任何解决方案?
答案 0 :(得分:0)
有关管理操作的文档非常有用,请转到take a look!
我认为只编写一个只会更新未被拒绝的博客的动作。
以下代码假设您有变量rejected
和approved
,它们映射到代表已被拒绝的博客的整数值,以及分别获得批准的博客:
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"