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