Django:将queryset传递给admin action的中间页面?

时间:2012-03-15 13:57:12

标签: django

目标

我的目标是在Django管理站点中编写“导出选择为CSV”操作。

阅读link1后,我认为将导出请求重定向到自定义视图是个好主意。

以下是问题:如何将当前queryset传递给中间页?

如果您选择所有实例,则link1中的方法无效(请参阅link2)。

我当前的解决方案

为了在中间页面中获取查询集,我有两个选择:

  1. pickle queryset.query并将其发送到?qs={picked_qs_query}的中间页面,然后在中间页面中重新创建queryset。在我看来,这是一个很好的解决方案,并使中间页面具有幂等性。
  2. 将查询集保存在会话中并将其加载到中间页面中。它很简单,但使页面不够幂等。
  3. 当然,我可以忽略中间页面并在“导出选择为CSV”操作中返回CSV内容,但这真的是一个好主意吗?

    有什么好主意吗?

    感谢您阅读此问题: - )

2 个答案:

答案 0 :(得分:5)

只需使用Django的默认delete_selected操作作为模板。它使用中间页面,没有复杂的酸洗等。

请参阅:https://github.com/django/django/blob/1.3.1/django/contrib/admin/actions.py

答案 1 :(得分:1)

以后在视图中生成QuerySet有问题吗?如果没有,那就这样做;

查看部分:

  • 编写自定义视图
  • 在视图中生成QuerySet
  • 将QuerySet添加到模板上下文
  • 渲染

管理员部分:

  • 只需创建操作并传递所需参数即可在视图中生成QuerySet