0

みなさん、こんにちは。django管理者についていくつか質問があります。

まず、関連する詳細。現在、クライアント、プリンター、カートリッジ、および注文のモデルがあります。

プリンタモデルには、カートリッジモデルに対するManyToManyFieldがあります。これにより、そのプリンタで使用できるすべてのカートリッジを選択できます。

Clienteには、所有するプリンターへのManyToManyFieldがあります。

1)Django管理者を介して注文を作成します。これにより、ManyToManyFieldを介してクライアント、割引、および複数のカートリッジを指定できます。これは、新しいカートリッジか詰め替えかを指定する別のテーブルを介して実行する必要があるため、少し注意が必要です。

2)管理者がカートリッジをフィルタリングして、所有しているプリンターに属するカートリッジのみを表示するようにします。

3)また、注文の合計金額を保持するフィールドが欲しいのですが、注文に追加したカートリッジの数に基づいて計算する必要があります。同じカートリッジを注文に追加するか、関連するテーブルに数量を指定する別のフィールドを追加することによって、これを行う必要があるかどうかはわかりません。

これは管理者で行うことができますか、それともフォームを使用する必要がありますか?もしそうなら、これを管理者に追加するにはどうすればよいですか?カートリッジのリストをフィルタリングするには、事前にクライアントを知っている必要があるため、難しいように思われ、おそらく複数の部分で行う必要があります。

4

2 に答える 2

2

私が見る限り、いいえ、それは実際には不可能です。開発版には外部キーを制限する方法がいくつかありますが、個別の外部キーに依存しているため、顧客に基づいた制限が可能であるとは思えません。

あなたが本当に管理者フォームでそれをすることに熱心であるならば、最良の提案はそれをするためにJavascriptを使うことでしょう。それでも、顧客が持っているプリンターとそれに基づいて表示するカートリッジのリストを取得するには、AJAX呼び出しを行う必要がありますが、それは可能です。MediaクラスでロードするJSファイルを指定するだけです。

しかし、それは価値があるよりも多くの仕事だと思います。私がそれを行うために見る最も簡単な方法は、フォームウィザードを使用することです。そうすれば、顧客を選択するステップがあり、次のステップで表示するカートリッジがわかります。

お役に立てば幸いです。

于 2009-05-31T00:09:44.053 に答える
1

私は同様の問題に取り組んできましたが、このような多くの場合、フォームを使用して独自の管理インターフェイスを作成する方が、意図しない機能を管理者に押し込むよりもはるかに優れているという結論に達しました。

3) に関しては、製品ベースがどのように見えるかによって異なります。顧客が 50 個の同一のウィジェットを注文する可能性が高い場合は、おそらく数量フィールドが必要です。顧客が赤と青の 2 つのウィジェットを注文する可能性が高い場合は、各アイテムを manytomany フィールドに個別に追加し、注文インターフェイスでそれらをグループ化します。

于 2009-06-01T20:40:05.993 に答える