跟踪使用表单创建的所有对象

时间:2013-06-13 18:49:35

标签: django forms primary-key field

好的,这可能需要一些解释。

我有一个名为PurchaceOrder的课程,其中有一个包含18个字段的表单。很多时候,会有几个PurchaceOrders,前12个字段是相同的。为了方便这一点(并且在每次尝试使12个字段相同时删除用户犯错的可能性)我有一个表单允许用户添加多个PurchaceOrder,前12个字段为从一个入口到下一个入口。这一切都很好,而且运作良好。

然而;在用户完成添加他/她PurchaceOrders的所有内容后,我需要一个启动页面,该页面显示刚刚创建的所有条目。这意味着我需要跟踪正在创建的新条目,但我想不出这样做的方法。现在我只是过滤类别,以便显示前{12}个字段与刚刚输入的字段相同的PurchaceOrders,但这显然不会真正起作用(可能有一个以前的条目有12个相同的字段)。我真正想要的是刚刚创建的条目的主键列表。然后,我可以将此信息传递到负责确认登录页面的视图。

在我目前的观点中,我有以下内容:

 if form.is_valid():
    entry=form.save()

我的想法是我可以做类似的事情:

pks = [pks, entry.id]

我不知道在哪里实例化列表。如果我在视图中执行它,每次重新加载页面时都会被删除。

我很感激任何帮助。

2 个答案:

答案 0 :(得分:0)

我的第一个想法是拥有一个单独的类/方法/函数来跟踪每个表单中的PurchaceOrder。 ID可以通过数据库或数组/链接列表绑定到结果,该列表在创建新的PurchaceOrder时自动递增。

就实例化列表而言,在首次调用类时将其实例化,或将其作为单独的类进行实例化。写完之后,一个单独的类更有意义,这可能就是我最初发布它的原因。

答案 1 :(得分:0)

长时间独自离开后,我终于想出了一个合适的解决方案。我所做的是创建了一个url conf,其中包含(?P<match>/+)/的正则表达式。该rexeg将用于包含由/分隔的任意数量的主键。我用它来存储已创建的PurchaseOrders的所有主键(也就是说,当我创建PurchaseOrder 15号时,它会将我重定向到/new/15,然后当我创建时16号,它指示我/new/15/16/,依此类推。然后,当我准备确认时,我被发送到/confirm/15/16/,我可以轻松访问我刚刚输入的条目的pk通过调用pks=match.split('/')创建。然后我可以简单地遍历pks并为每个对象做一些事情。我认为这是一个优雅的解决方案,只要你不介意你的用户看到主键。网址。

相关问题