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

标签 python django django-admin

我重写了 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)

这确实可以防止删除,但它会显示错误消息,并在其下方显示:已成功删除“x”对象(同样,未删除,因此不应出现成功消息)。我不想显示该错误消息,如果不满足条件,确认页面甚至不会显示,那就更好了(不过这是一个奖励)。有什么建议吗?

最佳答案

只需重写 modeladmin 上的 has_delete_permission 方法,该方法将根据条件返回 True 或 False。

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

Docs

关于python - 除非满足条件,否则如何在 Django 管理中不显示删除确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873092/

相关文章:

python - 简单的 Django 文件上传无效 :-((

django - 我怎样才能让 Django 管理员的 "View on site"链接工作?

python - 如何定义自定义过滤器并将其绑定(bind)到资源端点

python - 属性错误 : 'tuple' object has no attribute 'encode' when inserting data using mysql-connector

Python:将文件夹中的文件写入zipfile并压缩

python - 使用 psycopg2 插入多行

python - 在 Python/Django 中将用户的 facebook/twitter 好友与网站用户进行比较

python - Django 通用 View form_valid 无法在指定中间模型的 ManyToManyField 上设置值

django - 如何为 ModelAdmin 中的自定义字段分配初始值?

django - 从 RawQuerySet 返回 QuerySet