Py学习  »  Django

如何在Django管理中不显示删除确认,除非满足条件

Pittfall • 4 年前 • 753 次点击  

我超过了 delete_queryset 方法在能够删除模型之前添加条件。看起来是这样的:

def delete_queryset(self, request, queryset):
    if condition_is_not_met:
        self.message_user(request, 'Error', level=messages.ERROR)
        return

    super().delete_queryset(request, queryset)

这确实阻止了删除,但它显示了错误消息,并在下面显示, Successfully deleted 'x' objects (同样,没有删除,所以成功消息不应该在那里)。我不想显示那个错误消息,更好的是如果确认页面甚至没有显示,如果条件不满足(这是一个奖金)。有什么建议吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52823
 
753 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Mohit Solanki
Reply   •   1 楼
Mohit Solanki    4 年前

只需覆盖 has_delete_permission 方法,它将根据条件返回True或False。

def has_delete_permission(self, request, obj=None):
    if condition_is_not_met:
        return False
    return True

Docs