django order_byクエリセット、昇順と降順


287

djangoで設定したクエリを日付で降順に並べ替えるにはどうすればよいですか?

Reserved.objects.all().filter(client=client_id).order_by('check_in')

すべてのReserved by check_in日付を降順でフィルター処理したいだけです。

回答:



69
Reserved.objects.filter(client=client_id).order_by('-check_in')

「check_in」の前のハイフン「-」は降順を示します。昇順を意味します。

filter()の前にall()を追加する必要はありません。それでも機能しますが、ルートクエリセットのすべてのオブジェクトが必要な場合にのみall()を追加する必要があります。

詳細はこちら:https : //docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-specific-objects-with-filters


3
受け入れられた回答よりもきれいで、.all()。filter(xxx)を使用する理由はありません。
ルークデュピン

19

次の手順を使用することもできます。

Reserved.objects.filter(client=client_id).order_by('check_in').reverse()

4
できますが、少なくとも理論的には、SQLサーバーに順序を処理させる方が効率的であると強く思います。しかし、それは素晴らしく、明確です。
Michael Scheper

1
@MichaelScheperはい、それは確かです。また、.all().filter()必要ありません。.filter()一人で結構です。
サムクリーマー

14

昇順の場合:

Reserved.objects.filter(client=client_id).order_by('check_in')

降順:

1.  Reserved.objects.filter(client=client_id).order_by('-check_in')

または

2.  Reserved.objects.filter(client=client_id).order_by('check_in')[::-1]

1
なぜ誰もが2番目の方法を使用したいのですか?
MichaelR

これは利用可能な選択肢の1つです。しかし、より良いアプローチは、最初の方法を使用することです。
anjaneyulubatta505

12

それは削除して動作し.all()ます:

Reserved.objects.filter(client=client_id).order_by('-check_in')

3
これは基本的に@ leonardo-zの答えと同じですが、違いますか?
Michael Scheper

7

-を追加すると、降順で並べ替えられます。これを設定するには、モデルのメタにデフォルトの順序を追加します。これは、クエリを実行するときにMyModel.objects.all()を実行するだけで、正しい順序で出力されることを意味します。

class MyModel(models.Model):

    check_in = models.DateField()

    class Meta:
        ordering = ('-check_in',)

3
  1. 昇順

    Reserved.objects.all().filter(client=client_id).order_by('check_in')
  2. 降順

    Reserved.objects.all().filter(client=client_id).order_by('-check_in')

- (ハイフン)は、ここでは降順を示すために使用されます。



-1

67

Reserved.objects.filter(client = client_id).order_by( '-check_in')

「-」は降順を示し、昇順の場合はクラス属性を指定するだけです


1
ご質問の内容を詳しく説明してください
iman

こんにちは、StackOverflowへようこそ。回答を確認し、正しくフォーマットし、説明してください(この "67"は何ですか?)。「良い」答えを書く方法については、stackoverflow.com / help / how - to - answerを参照してください
Pierre
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.