テーブルの値をユーザーが並べ替えることができ、新しい値を追加して古い値を削除できるDjangoアプリケーションがあります。ユーザー変更可能なカスタムオーダーのDjangoモデルフィールド
これを行う「正しい」方法は何ですか?
Iは、order = models.IntegerField()
を定義し、正しいカスタム順序を作成するために、正しい値に行ごとにユーザによって定義されるように設定できました。しかし、これには、すべての再注文に変更後のすべての行が新しいorder
で更新される必要があるという大きな欠点があります。コードを少しスマートにし、前と次の中間に選択されたIntegerを定義することもできますが、それでも時折競合が発生し、すべての行を更新する必要があることを意味します。
解決策の1つは、フロートを使用することです。次に、挿入された行の順序は、前と次の中間になります。特に、行の数が非常に多くなった場合は、順序付けに浮動小数点を使用する際に問題がありますか?
このようなものを処理するには、より優れた/よりスマートな/組み込みの方法がありますか?
データベースを注文しないでください。ユーザーに表示されているものだけですので、それを作るクエリーセットを注文するか、ユーザーの注文プリファレンスを保存する方法を提供してください – Sayse
申し訳ありませんが、私ははっきりしていませんでした。 (クエリーセットの注文/ユーザー設定の保存)。私が思っていることは、それを行う正しい方法は何ですか(調整や挿入/削除などがたくさんある場合) – EMon
あなたの質問は、いつも瑕疵がある注文を保存することです。あなたは注文の優先度を格納する必要があります。たとえば、スタックオーバーフローの回答は、それらがどれくらい積極的であるか、投票数がどれくらいあるかによって決めることができます。 – Sayse