2016-03-31 31 views
0

3 yaklaşan olayı tarihe ve saate göre sıralamaya çalışıyorum. Ben nasıl zaman olayları sıralamak istiyorumdjango zamana göre sırala

def get_upcoming_events(self): 
    today=date.today() 
    return Event.objects.filter(Q(start__gte=today) | Q(end__lte=today)).order_by('-start')[:3] 

kullanarak tarihleri ​​sıralamak başardı? Lastest() kullanımı hakkında bir şey okudum ama zaman depolamak için başka bir alan ilan etmem gerekip gerekmediğinden emin değildim.

+0

İlgili değil, ama bu '__gte = bugün' ve '__lte = bugün ne yapar? –

+1

Yukarıdaki kodun nesi yanlış? order_by ('- start') ', – v1k45

+0

siparişi vermek için iyi çalışmalıdır. Ayrıca, Event modelinizi de sorgularsanız, daha iyi bir çözüm sunabilirsiniz. –

cevap

0

Birkaç sütunla sipariş verebilirsiniz. Buraya bakın: Varsayılan olarak https://docs.djangoproject.com/en/1.9/ref/models/querysets/#order-by

order_by(*fields)¶ 

, bir sorgu kümesi tarafından döndürülen sonuçlar modelin Meta sipariş seçeneği ile verilen sipariş başlığın göre sıralanır. Order_by yöntemini kullanarak bunu QuerySet temelinde geçersiz kılabilirsiniz.

Örnek:

Entry.objects.filter(pub_date__year=2005).order_by('-pub_date', 'headline') 

yukarıdaki Sonuç daha sonra başlık Artan, pub_date azalan göre sıralanacaktır. "-pub_date" nin önündeki negatif işaret azalan sırayı gösterir. Artan sipariş belirtilir.