【发布时间】:2025-12-23 06:15:06
【问题描述】:
我知道如何编写提供中间页面的操作,因为文档很棒:
但是,如果我的选择包含 100k 行,则文档的模式不起作用,因为 URL 太长了。
如何编写提供中间页面并可以处理 +100k 行的 Django Admin Actions?
【问题讨论】:
-
你不能在其他地方保存 id,例如会话还是数据库表?
-
@Alasdair 是的,我可以将 ID 保存在缓存或数据库中。但是写 100k 个 ID 开销很大。如果您可以只存储没有所有 ID 的 QuerySet SELECT 语句,那就太好了。
-
在这种情况下,您最好的选择是使用发布数据。但是您不能通过重定向发布。所以你需要编写一个自动提交模板并传递数据。而不是做一个
return HttpResponseRedirect("/export/?ct=%s&ids=%s" % (ct.pk, ",".join(selected)))你将呈现一个模板,它会自动将数据提交到下一个url -
@TarunLalwani 您的解决方案听起来不错。但我缺少一个部分:如何从 GET 数据创建查询集?这需要适用于 list_filter 和漂亮的
date_hierarchy过滤器。 -
您将在
def export_as_json(modeladmin, request, queryset):中获得查询集,您可以从中提取 id 并使用变量将其传递给模板
标签: django django-admin