我正在使用 Django 2.2.10。
我有一个名为 的模型Site,还有一个名为 的模型Record。每条记录都与一个站点(外键)相关联。
我的应用程序运行几天/几周/几个月后,每个站点都可以有数千条与之关联的记录。我有效地使用数据库,所以这通常不是问题。
然而,在 Django Admin 中,当我尝试删除站点时,Django Admin 尝试找出也将被删除的每个关联对象,并且因为我的外键使用on_delete=models.CASCADE,这正是我想要的,所以它尝试生成一个列出数千个的页面,可能有数百万条记录将被删除。有时这会成功,但需要几秒钟。有时浏览器会放弃等待。
record我怎样才能让 Django Admin 不列出它打算删除的每一个?也许只是说“将删除 x 条记录”之类的内容。
更新:我应该覆盖 Django admin 的 delete_confirmation.html 吗?看起来罪魁祸首可能是这一行:
<ul>{{ deleted_objects|unordered_list }}</ul>
Run Code Online (Sandbox Code Playgroud)
或者是否有一个选项可以启用自动不列出要删除的每个对象,也许如果对象计数超过 X 个对象?
更新2:从delete_confirmation.html 中删除上述行没有帮助。我认为生成deleted_objects 变量的视图花费的时间太长。不太确定如何覆盖 Django 管理视图
将其添加到您的管理类中,然后您可以使用此操作删除而不发出警告
actions = ["silent_delete"]
def silent_delete(self, request, queryset):
queryset.delete()
Run Code Online (Sandbox Code Playgroud)
如果您想隐藏默认删除操作,请将其添加到您的管理类中
def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2072 次 |
| 最近记录: |