django order_by sorgu seti, artan ve azalan


288

Django'daki sorgu kümemi tarihe göre azaltarak nasıl sipariş verebilirim?

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

Ben sadece tüm Ayrılmış tarafından check_in tarihine inen filtre istiyorum.

Yanıtlar:


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

-Önce dikkat edin check_in.

Django Belgeleri


models.somModalName.all (). order_b ('- tarih / saat')
Shedrack

1
-sütun adından önce -ortalama artan olmadan azalan sıralama anlamına gelir.
CallMarl

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

"Check_in" öğesinin önündeki bir kısa çizgi "-" azalan sırayı belirtir. Artan düzen ima edilir.

Filter () öğesinden önce bir all () eklememiz gerekmez. Bu yine de işe yarayacaktır, ancak yalnızca QuerySet kökünden tüm nesneleri istediğinizde all () eklemeniz gerekir.

Burada daha fazlası: https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-specific-objects-with-filters


3
Kabul edilen cevaptan daha temiz, .all (). Filtresine (xxx) sahip olmak için bir neden yok.
Luke Dupin

19

Aşağıdaki talimatları da kullanabilirsiniz:

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

4
Yapabilirsin, ama en azından teoride, SQL sunucusunun siparişi işlemesine izin vermenin daha verimli olduğundan şüpheleniyorum. Yine de güzel ve net.
Michael Scheper

1
@MichaelScheper evet, bu kesin. Ayrıca, .all().filter()gerekli değildir. .filter()yalnız iyi.
Sam Creamer

14

artan sipariş için:

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

azalan düzen için:

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

veya

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

1
Neden kimse ikinci yöntemi kullanmak ister ki?
19:15 MichaelR

Bu mevcut seçeneklerden biri. Ancak, daha iyi bir yaklaşım 1. yöntemi kullanmaktır.
anjaneyulubatta505

12

Kaldırma çalışır .all():

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

3
Bu temelde @ leonardo-z'nin cevabı ile aynıdır, değil mi?
Michael Scheper

7

- eklenmesi onu azalan sırada sıralar. Bunu, modelinizin meta alanına varsayılan bir sipariş ekleyerek de ayarlayabilirsiniz. Bu, bir sorgu yaptığınızda sadece MyModel.objects.all () yaptığınız ve doğru sırayla çıkacağı anlamına gelir.

class MyModel(models.Model):

    check_in = models.DateField()

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

3
  1. Artan düzen

    Reserved.objects.all().filter(client=client_id).order_by('check_in')
  2. Azalan sipariş

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

- (tire) burada azalan sırayı belirtmek için kullanılır.


1

Bu benim için çalışıyor.

latestsetuplist = SetupTemplate.objects.order_by('-creationTime')[:10][::1]

-1

67

Reserved.objects.filter (istemci = client_id) .order_by ( '- CHECK_IN')

'-' Azalan düzeni belirtir ve Artan düzen için sadece sınıf niteliğini verir


1
Lütfen sorularınız için daha fazla bağlam verin
iman

Merhaba, StackOverflow'a hoş geldiniz, lütfen cevabınızı gözden geçirin, doğru biçimlendirin, açıklayın (üstte bu "67" nedir ???); "iyi" bir cevap yazmayı öğrenmek için stackoverflow.com/help/how-to-answer adresine başvurabilirsiniz
Pierre
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.