0

わかりました、これには少し説明が必要かもしれません。

という名前のクラスがPurchaceOrderあり、18 個のフィールドを持つフォームがあります。多くの場合PurchaceOrders、最初の 12 フィールドが同じであるものがいくつかあります。これを容易にするために (そして、ユーザーが毎回同じ 12 フィールドを作成しようとするときにエラーが発生する可能性を排除するために)、ユーザーがPurchaceOrder最初の 12 フィールドを 1 つのエントリから引き継いで複数のフィールドを追加できるようにするフォームがあります。次へ。これはすべて問題なく良好であり、非常にうまく機能しています。

でも; ユーザーがすべての追加を完了した後、作成されたPurchaceOrdersすべてのエントリを表示するスプラッシュ ページが必要です。これは、作成されている新しいエントリを追跡する必要があることを意味しますが、これを行う方法が思いつきません。今のところPurchaceOrders、最初の 12 個のフィールドが入力したものと同じになるようにカテゴリをフィルタリングしているだけですが、これは明らかに実際には機能しません (これらの 12 個のフィールドを持つ以前のエントリが存在する可能性があります)。同じだ)。私が本当に欲しいのは、作成したばかりのエントリの主キーのリストです。次に、確認ランディング ページを担当するビューにこの情報を渡すことができます。

私の現在の見解では、次のように考えています。

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

私の考えでは、次のようなことができると思いました:

pks = [pks, entry.id]

リストをインスタンス化する場所がわかりません。ビューで実行すると、ページがリロードされるたびに削除されます。

助けていただければ幸いです。

4

2 に答える 2

0

私の最初の考えは、各フォームで PurchaceOrder を追跡する個別のクラス/メソッド/関数を持つことです。ID は、新しい PurchaceOrder が作成されたときに自動インクリメントされるデータベースまたは配列/リンクされたリストを介して結果に関連付けることができます。

リストのインスタンス化に関しては、クラスが最初に呼び出されたときにインスタンス化するか、別のクラスとして作成します。それを書いた後、別のクラスがより理にかなっています。おそらく、最初にそのように投稿した理由です。

于 2013-06-13T18:54:03.253 に答える
0

これを長い間放っておいた後、ようやく適切な解決策を思いつきました。私が行ったことは、正規表現を含む URL conf を作成する(?P<match>/+)/ことです。その rexeg は、 で区切られた任意の数の主キーを含めるために使用されます/。これを使用して、作成された のすべての主キーを格納しますPurchaseOrders(つまり、PurchaseOrder15 番を作成すると にリダイレクトされ/new/15、16 番を作成すると にリダイレクトさ/new/15/16/れます)。 「確認の準備ができました。送信されました。/confirm/15/16/作成したばかりのエントリの pk に簡単にアクセスできます pks=match.split('/')。これを呼び出すと、次の手順を単純に繰り返すことができます。pks各オブジェクトに対して何かを行います。ユーザーが URL に主キーを表示することを気にしない限り、これは洗練されたソリューションだと思います。

于 2013-07-01T15:30:29.757 に答える