好的,这可能需要一些解释。
我有一个名为PurchaceOrder
的课程,其中有一个包含18个字段的表单。很多时候,会有几个PurchaceOrders
,前12个字段是相同的。为了方便这一点(并且在每次尝试使12个字段相同时删除用户犯错的可能性)我有一个表单允许用户添加多个PurchaceOrder
,前12个字段为从一个入口到下一个入口。这一切都很好,而且运作良好。
然而;在用户完成添加他/她PurchaceOrders
的所有内容后,我需要一个启动页面,该页面显示刚刚创建的所有条目。这意味着我需要跟踪正在创建的新条目,但我想不出这样做的方法。现在我只是过滤类别,以便显示前{12}个字段与刚刚输入的字段相同的PurchaceOrders
,但这显然不会真正起作用(可能有一个以前的条目有12个相同的字段)。我真正想要的是刚刚创建的条目的主键列表。然后,我可以将此信息传递到负责确认登录页面的视图。
在我目前的观点中,我有以下内容:
if form.is_valid():
entry=form.save()
我的想法是我可以做类似的事情:
pks = [pks, entry.id]
我不知道在哪里实例化列表。如果我在视图中执行它,每次重新加载页面时都会被删除。
我很感激任何帮助。
答案 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
并为每个对象做一些事情。我认为这是一个优雅的解决方案,只要你不介意你的用户看到主键。网址。