2

私はあちこち検索しましたが、これに対する答えは見つかりませんでした。私は Django 1.4 を使用していますが、私の問題は次のとおりです。「ツリーのような」モデル構造を contrib admin に実装しようとしています。

モデル A とモデル A の子であるモデル B があるとします。A の管理者 change_list グリッドで項目をクリックすると、モデル B の change_list ビューにリダイレクトして、A の子でフィルター処理する必要があります。

以前のバージョンの Django では、子モデルの管理 URL を書き直して (?(\d+)) を追加しました。

例: add url ^(.+)/ は ^(?< parent_id >(\d+))/(.+)/ に変更されたため、変更ビューで親オブジェクトを取得し、必要なすべてのフィルタリングに使用して送信しましたブレッドクラムに表示されるコンテキストで。

すべての管理テンプレートに、ブレッドクラム、追加、削除、履歴などの相対リンクがあったため、機能しました。たとえば、削除確認ページのキャンセルボタンには href='../../' があり、それをクリックしましたapp/model/parent_id/obj_id/delete から app/model/parent_id に私を連れて行ったでしょう

すべてのテンプレート リンクが逆 URL で生成される 1.4 の変更により、明らかに NoReverseMatch でエラーが発生します。一時的な修正は、すべての子管理ページで親 ID を使用できるように、セッションで親 ID を渡すことでした (多くの理由から、これは良い方法ではないと思います)。

結論として、URL で親 ID を送信できるように、現在のテンプレートに干渉しない方法で管理 URL を書き直そうとしています (クエリ文字列で送信することもオプションではありません)。似たようなことをしましたか?

4

0 に答える 0