私は、好ましくは、複数のビューで使用することができ、一般的な方法で、濾過し、ソートされたオブジェクトのリストを維持する必要があります。これは必要なので、私は次のリンクを生成し、他の非常に有用なものをユーザに提供することができます。フィルタの複雑なフィルタ状態を維持するための戦略?
例:フィルタクエリセットが構築された後
field__isnull=True
field__exact="so"
field__field__isnull=False
はまた、順序はフィールドのいずれかによって適用することができます。
私の現在のソリューションは、最初のクエリセットと一緒に、フィルタのコレクションを含むFilterSpecにクラスを使用することです。このクラスは次にシリアル化され、ビューに渡されます。
25の動的濾過アイテムとビューを考えます。ビューの各アイテムには、アイテムの詳細なビューを取得するためのリンクがあります。これらのリンクのそれぞれに、現在のリストの直列化されたFilterSpecオブジェクトが追加されます。だからあなたは巨大なURLで終わる。さらに悪いことに、同じ巨大なフィルタがすべての25のリンクに追加されています!
別のオプションは、セッションではFilterSpecを格納することですが、その後、あなたはFilterSpecにを削除する際の問題に実行します。次に、オブジェクトの新しいリストの準備のためにフィルタを削除する必要があるかどうかを判断しようとするコードで、すべてのビューが混乱していることがわかります。
私はこの問題は以前に解決されていると確信しているので、私はあなたたちがが出ている他のソリューションを聞いてみたいです。
Carlさんに感謝します。はい、私はこの問題をすでに解決していたサードパーティ製の「銀色の弾丸」アプリケーションがあることを期待していました。これは臨床応用であるため、URL共有は予期されません。私はセッションがより適切だと思いますが、これを聞かせてください:詳細ビューを終了するとき、詳細ビューがリンクするすべてのビューからこのセッション変数をクリアせずにどのようにクリアしますか? – slypete
@slypete申し訳ありませんが、私はあなたの質問を理解していません。セッション変数をクリアする必要があるのはなぜですか? 「詳細ビューを終了するとき」とはどういう意味ですか?セッション変数をクリアすると、そのセッションからクリアされます。ユーザーがその時点からロードしたページには、別のページが再度変数を設定しない限り、変数は表示されません。ここには何かについての誤ったコミュニケーションや誤解がありますが、私はどこで明確ではありません。 –
この詳細ビューを入力すると、セッション変数がアイテムのソートされたリストと共に格納されます。セッション変数をクリアするためにこのビューを離れていることをどのように検出しますか?セッション変数がクリアされない場合は、オプションのセッション変数を設定しないコンテキストからこのビューを入力すると、以前と同じリストコンテキストにユーザーが残ります。 – slypete