2009-05-27 11 views
0

私は多くの注文(SupplierOrder)を保持するSupplier Invoice(SupplierInvoice)親モデルを持っています。現在、ユーザーがdjango adminを介して請求書を作成すると、djangoはそのサプライヤと製品の価格一致がコスト値表にあるかどうかを調べ、それぞれのフィールドを引き出します。このプロセスはカスタム保存メソッドで行われます。管理フォームの検証

私が追加する必要があるのは、価格が一致しないケースをカバーするためのコードです。この場合、検証は開始し、コミットする前に注文に何かを入力する必要があることをユーザーに警告します。

カスタムモデルフォームの「クリーン」メソッドでいくつかのバリエーションを試しましたが、保存メソッドが価格を調べて最初にチェックするチャンスがある前に、

理想的には、Djangoが適切なテーブルを価格と一致するかどうかチェックすることです。次に、一致するものがないと言って、入力する必要があります。

http://dpaste.com/hold/47848/対応コードです。

助けてくれてありがとう - 私は完全に困惑しています!

+0

FWIW、あなたはそのdpasteの4行目にタイプミスがあります - 「このフィールドIDは保存時に設定されています」というのは、「このフィールドは保存時に設定されます」ということです。 –

+0

Dominic- ) – user108791

答えて

1

いいえ、保存する前にクリーンが起こります。フォームを保存する前に、フォームが有効であることを確認する必要があります。だからあなたはクリーンで価格ルックアップを行う必要があります。

+0

モデルレイヤーで価格検索の動作を維持したい場合(フォームを使用せずにそのモデルのインスタンスを保存する場合)、フォームのクリーンメソッドから呼び出す個別のメソッドにリファクタリングすることができますまた、価格がまだ設定されていない場合は、モデルのsave()メソッドから取得されます。 –

+0

答えを取り除きますが、このアプローチでは成功しています。私は、インラインフォームの親の1つの変数にアクセスすることができないため、価格ルックアップがビジネスを行うことになります。親(請求書)がまだ保存されていないため、変数にアクセスできないためです。それはrequest.postにあります - きれいなメソッドでリクエスト投稿変数を取得するにはどうしたらいいですか?ありがとう – user108791