2017-08-15 2 views
0

データベースが結果を並べ替えることが許可されている場合、私の言語で間違った結果が得られるCロケールに従って文字列がソートされるという問題があります。たとえば、発音区別記号付きのすべての文字はすべてASCII文字の後にあるとみなされます。たとえば、śzの後になりますが、stの間に来るはずです。Djangoに管理結果をデータベースではなくPythonでソートさせることができますか?

しかし、私がPythonで結果をソートできるのであれば、現在のロケールに従ってソートする方法をPythonに簡単に伝えることができます。 setlocale(LC_ALL, 'pl_PL.UTF-8')を入力し、並べ替えのキーをstrxfrmという結果にするようにモデルの文字列表現に設定します。

Djangoに上記の問題を回避するために、データベースではなく、Pythonで管理者の結果を並べ替えるにはどうすればよいですか?

+3

データベースの照合順序を調べましたか?特定の理由がない場合は、問題をより一般的に解決します。そうしたくない場合やそうしたくない場合。 –

+0

@PeterDeGlopper DBは現在のところ、私が知っている限り、ジェネリックの照合設定をサポートしていないが、クエリごとにのみSQLiteである。私はここで間違っているかもしれない、そうですか? – gaazkam

+0

私はSQLiteの専門家ではありませんが、ドキュメントからは、ここで役に立つコレーションを提供するようには見えません。だから、Pythonでやっているように見えるのは、あなたがSQLiteを使っている限り、最良の選択肢です。 'get_queryset'の答えは、それを行う良い方法のように思えますが、私は選択肢を探しました。 –

答えて

3

コメント執筆者が指摘したように、データベースが適切な解決策のように見えるのは、特にデータベースがこれらのタイプのものを効率的な方法(並べ替え、順序付けなど)で行うためです。

ただし、Pythonで行うことをお勧めする場合は、the docsのように、管理クラスのget_querysetメソッドをオーバーライドして、必要なコードを入れてください。

+0

DBは現在のところ、私が知っている限り、ジェネリックでの照合の設定をサポートしていませんが、クエリごとにのみSQLiteです。私はここで間違っているかもしれない、そうですか? – gaazkam

+0

私はSQLiteが照合設定をサポートしているとは思わない。 SQLite上で本番環境での運用を計画していますか?私はそれが特に一般的だとは思わない、人々は一般的にローカル開発のためだけにそれを使用し、生産のための標準データベースシステムを使用します。 – MrName

+0

これは学術的な課題です... SQLiteが本番環境で動作する最良の選択肢ではないかもしれないが、私はこれが問題ではないと思う。 – gaazkam

関連する問題