App Engine で Django Non Rel を使用していますが、多くのインデックスが必要なため、Django Admin の複数の列による並べ替え機能に問題があります。Django 1.3 の動作を再現したいと思います。列をクリックすると、列でのみ並べ替えることができます。
私はグーグルとすべてを試しましたが、方法が見つかりませんでした。
App Engine で Django Non Rel を使用していますが、多くのインデックスが必要なため、Django Admin の複数の列による並べ替え機能に問題があります。Django 1.3 の動作を再現したいと思います。列をクリックすると、列でのみ並べ替えることができます。
私はグーグルとすべてを試しましたが、方法が見つかりませんでした。
これを行う「適切な」方法はありません(1.4では、それ以降のバージョンについてはわかりません)
ただし、コードで無効にするのは非常に簡単であることが判明しました。
result_headers
で関数を編集しますdjango/contrib/admin/templatetags/admin_list.py
yield
149 行目に、次の行を挿入します (ステートメントの直前)。
o_list_primary = [make_qs_param(new_order_type, i)]
o_list_toggle = [make_qs_param(new_order_type, i)]
複数の並べ替え機能を無効にすることが望ましいのはなぜですか?
django-nonrel を使用する場合 (Google アプリ エンジンなど)、並べ替え順序の一意の組み合わせごとに独自のインデックスが必要です。並べ替え可能な列が 5 つあるリストの場合、これには、エンティティごとに許可されている最大数 (現在は 200) を超えるインデックスが必要です。
この変更を元に戻すことについて話している: https://code.djangoproject.com/ticket/11868。「たくさんのインデックスが必要です」という意味がわからないので、なぜこの機能を削除したいのかわかりません。Django > 1.4 では、「クリックしたときに 1 つの列のみでソート」します。違いは、2 番目の列をクリックすると、最初の列の要素が同一である場合の 2 次ソートになります。
とにかく、何らかの理由でこの機能を元に戻したい場合は、古いバージョンの django/contrib/admin ディレクトリをプロジェクト フォルダーに追加してみてください。そうすれば、古い管理者が使用されます。