このサンプルモデルを考えてみましょう。
MODEL_CHOICES =((u "SPAM"、u "Spam")、(u "XOUP"、u "Eggsoup")、)
(をちょきちょきと切る)
type = models.CharField(max_length = 4、choices = MODEL_CHOICES)
(実際の実装はドメイン固有であり、英語以外であるため、このサンプルで行う必要があります。)
クエリを作成するときに、そのタイプフィールドで結果を並べ替えて、結果をユーザーに表示したいと思います。当然、そのフィールドの表示名で並べ替えたいと思います。
次のようなもの:
ドキュメント=MyModel.objects.filter(...)。order_by( "type")
ただし、[query-set].order_by([field])
フィールド名での並べ替えのみが許可されているため、Eggsoup <Spam(人間の読者にとって)であっても、SPAM <XOUP(マシンに対して)になります。
タイプ別にソートされたこのインスタンスのセットについて考えてみます。
名前| タイプ
obj1 | スパム
obj2 | スパム
obj3 | スパム
obj4 | XOUP
obj5 | XOUP
ただし、これはユーザーに表示される順序です。つまり、ユーザーには、タイプ列の内部フィールド値ではなく、表示名が表示されます。
名前| タイプ
obj1 | スパム
obj2 | スパム
obj3 | スパム
obj4 | エッグスープ
obj5 | エッグスープ
人間のユーザーの目には、これは正しくソートされていません。
表示名で並べ替えることができるDjangoの機能はありますか?または、これを「手動で」達成する方法はありますか?(表示名が実際の値と同じ順序になるように選択肢の名前を変更することはできません。)