Wie kann ich die Abfrage für Objekte im aktuellen Jahr , Aktueller Monat, in django
Ich muss insgesamt erstellte Objekte in
1. current year
2. current month
3. last month
4. last year
Ich bin, der so denkt
this_year = datetime.now().year
last_year = datetime.now().year -1
this_month = datetime.now().month
last month = (datetime.today() - timedelta(days=30)).month
Verwenden, wie
Order.objects.filter(created_at__month=this_month)
Das problem ist
- Datum ich will, ist der Kalendermonat, nicht 30 Tage zurück
- ich bin mir nicht sicher, ob erstellt, der___Monat=this_month entsprechen den aktuellen Monat oder dem gleichen Monat im Vorjahr
- ist es möglich, an allen Punkten im einzelnen Abfrage
Du musst angemeldet sein, um einen Kommentar abzugeben.
1 Laufende Jahr
2 Aktuellen Monat
3 im Letzten Monat
4 im Letzten Jahr
5 Einzelne Abfrage
Als im letzten Jahr + laufende Jahr enthält die letzten Monate und den aktuellen Monat und alle Bestellungen>= last_year umfasst aktuelle Jahr, die Abfrage ist super einfach:
settings.py
Sie verwenden möchten, können Django Zeitzone anstelle von datetime.from django.utils import timezone now = timezone.now()
Ich glaube nicht, dass Sie werde in der Lage sein, zu einfach und entspricht dem "Monat" oder "Jahr" - Teil in einem date-Feld ohne einige erhebliche hantieren oder Anmerkungen. Die meisten wahrscheinlich, Ihre einfachste Lösung ist das definieren der Anfang und das Ende des Bereichs, den Sie möchten, und suchen gegen, die. Und das könnte mit ein wenig Arbeit.
Beispielsweise die letzten Kalender Monat wäre:
GTE und LTE sind "größer oder gleich" und "kleiner oder gleich". Zudem erwähnenswert ist, das wir verwenden, timedelta, um herauszufinden, was am Tag vor dem ersten des Monats, anstatt zu gehen durch alle die verschiedenen Fälle, ob der Vorherige Monat 28, 29, 30 oder 31 Tage.
Wenn Sie es wollen, in getrennte Abfragen, etwas zu tun.
Hinweis: in meinem Beispiel habe ich '06', dass Juni ist, aber Sie können es ändern.