私は「ユーザー」と呼ばれるdjangoモデルを持っています。これは、人に関する基本的な情報、つまり名前と名前を格納します。現在、djangoモデル全体を簡単に検索しています。ユーザーが名を入力すると、djangoクエリセットは最初の10件の一致を姓の順に返します。
たとえば、現在、「Sam」を検索すると、次の結果が得られる可能性があります。
- サムアボット
- サミュエル・ベイカー
- サミー・ロジャース
- サム・シモンズ
このためのコードは単純です:
User.objects.filter(Q(first__istartswith=token)).order_by('last')
ただし、これを変更して、完全な名の一致が最初に返され、その後に残りの結果が返されるようにします。したがって、誰かが「Sam」と入力した場合、結果は代わりに次のようになります。
- サムアボット
- サム・シモンズ
- サミュエル・ベイカー
- サミー・ロジャース
(完全な名が最初に一致し、名前で並べ替えられ、その後に残りの一致が名前で並べ替えられます)。
これを2つのクエリセットに変換してリストを結合することを考えましたが、1回限りのクエリを作成するのではなく、基本的なdjangoクエリセットAPIを使用して、1つのクエリでこれを実行できるかどうか疑問に思いました。誰かがそれをする方法を知っていますか?
前もって感謝します。