【问题标题】:Keep track of all objects created using a form跟踪使用表单创建的所有对象
【发布时间】:2013-06-10 07:02:51
【问题描述】:

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

我有一个名为PurchaceOrder 的类,它有一个包含 18 个字段的表单。很多时候,会有几个PurchaceOrders,前 12 个字段是相同的。为了促进这一点(并消除用户每次尝试使 12 个字段相同时出错的机会),我有一个表单允许用户添加多个 PurchaceOrder 并结转前 12 个字段从一个条目到另一个条目。这一切都很好,并且运行良好。

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

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

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

我的想法是我可以这样做:

pks = [pks, entry.id]

我不知道我会在哪里实例化列表。如果我在视图中执行此操作,则每次重新加载页面时都会将其弹出。

如果有任何帮助,我将不胜感激。

【问题讨论】:

    标签: django forms primary-key field


    【解决方案1】:

    搁置了很久,我终于想出了一个合适的解决方案。我所做的是创建了一个 url conf,其中包含 (?P<match>/+)/in 的正则表达式。该 rexeg 将用于包含由/ 分隔的任意数量的主键。我用它来存储已创建的PurchaseOrders 的所有主键(即,当我创建PurchaseOrder 15 号时,它会将我重定向到/new/15,然后当我创建16 号时,它会引导我到/new/15/16/,等等。然后当我准备好确认时,我被发送到/confirm/15/16/,我可以通过调用pks=match.split('/')轻松访问我刚刚创建的条目的pk。然后我可以只需遍历 pks 并为每个对象做一些事情。我认为这是一个优雅的解决方案,只要您不介意您的用户看到 url 中的主键。

    【讨论】:

      【解决方案2】:

      我的第一个想法是有一个单独的类/方法/函数来跟踪每种形式的 PurchaceOrder。 ID 可以通过数据库或数组/链表与结果相关联,在创建新的 PurchaceOrder 时自动递增。

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

      【讨论】:

      • 这似乎比它需要的复杂得多。只存储一个整数列表应该相对简单——它不需要围绕它构建那么多。据我所知,您的建议需要两个类——一个类(称为 PK 之类的东西)只有一个 IntegerField,另一个类(称为 PKList 之类的东西)有一个 ManyToManyField,可以容纳很多PK。但这一切感觉对于一个整数列表来说工作量太大了。嗯……
      猜你喜欢
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2011-07-21
      • 2021-01-03
      • 2021-12-21
      相关资源
      最近更新 更多