2016-03-31 18 views
0

Ich versuche, 3 bevorstehende Ereignisse nach Datum und Uhrzeit zu sortieren. Ich war in der Lage, die Daten zu sortieren, indemdjango sortieren nach Zeit

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

Wie würde ich durch die Zeit, die Ereignisse sortieren? Ich habe etwas über die Verwendung von lastest() gelesen, war mir aber nicht sicher, ob ich ein weiteres Feld zum Speichern von Zeit angeben müsste.

+0

Nicht verwandt, aber was macht das "__gte = heute" und "__lte = heute"? –

+1

Was ist mit dem obigen Code falsch? 'order_by ('- start')' sollte für die Bestellung funktionieren – v1k45

+0

Sie sollten auch Ihr Event-Modell in die Frage einfügen, könnte eine bessere Lösung geben. –

Antwort

0

Sie können nach mehreren Spalten sortieren. Siehe hier: von der Bestelloption in dem Modell des Meta gegeben https://docs.djangoproject.com/en/1.9/ref/models/querysets/#order-by

order_by(*fields)¶ 

standardmäßig von einem QuerySet zurückgegebenen Ergebnisse werden durch die Bestellung Tupel bestellt. Sie können dies für jede QuerySet-Basis überschreiben, indem Sie die Methode order_by verwenden.

Beispiel:

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

Das Ergebnis oberhalb von pub_date absteigend geordnet werden, dann durch Überschrift aufsteigend. Das negative Vorzeichen vor "-pub_date" gibt die absteigende Reihenfolge an. Aufsteigende Reihenfolge ist impliziert.