gpt4 book ai didi

python - 如何处理 Django Admin 的大量删除?

转载 作者:行者123 更新时间:2023-12-04 13:16:10 27 4
gpt4 key购买 nike

我正在使用 Django 2.2.10。

我有一个模型叫 Site ,以及一个名为 Record 的模型.
每条记录都与一个站点(外键)相关联。

在我的应用程序运行几天/几周/几个月后,每个站点都可以有数千条与之相关的记录。我有效地使用了数据库,所以这通常不是问题。

然而,在 Django Admin 中,当我尝试删除一个站点时,Django Admin 试图找出也将被删除的每个关联对象,因为我的 ForeignKey 使用 on_delete=models.CASCADE ,这就是我想要的,它尝试生成一个页面,其中列出了将被删除的数千条甚至数百万条记录。有时这会成功,但需要几秒钟。有时浏览器只是放弃等待。

我怎么能让 Django Admin 不列出每一个 record它打算删除?也许只是说诸如“将删除 x 条记录”之类的内容。

更新:我应该覆盖 Django 管理员的 delete_confirmation.html 吗?看起来罪魁祸首可能是这一行:

<ul>{{ deleted_objects|unordered_list }}</ul>

或者是否有一个选项可以启用自动不列出要删除的每个对象,也许如果对象计数超过 X 个对象?

更新 2:从 delete_confirmation.html 中删除上面的行没有帮助。我认为是生成deleted_objects 变量的 View 花费了太长时间。不太确定如何覆盖 Django 管理 View

最佳答案

将此添加到您的管理类,然后您可以在没有警告的情况下使用此操作删除

  actions = ["silent_delete"]

def silent_delete(self, request, queryset):
queryset.delete()

如果您想隐藏默认删除操作,请将其添加到您的管理类
  def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions

关于python - 如何处理 Django Admin 的大量删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60286698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com