2009-06-11 14 views
19

C'è un modo per ottenere tutti gli oggetti con una data inferiore a un mese fa in django.Ottenere tutti gli elementi con meno di un mese

Qualcosa di simile:

items = Item.objects.filter(less than a month old).order_by(...) 
+0

Cosa intendi per "tutti gli oggetti"? Intendi tutti gli oggetti di un particolare tipo? –

+0

Sì, tutti gli oggetti di tipo "Articolo" –

risposta

32

Qual è la sua definizione di un "mese"? 30 giorni? 31 giorni? Passato che, questo dovrebbe farlo:

from datetime import datetime, timedelta 
last_month = datetime.today() - timedelta(days=30) 
items = Item.objects.filter(my_date__gte=last_month).order_by(...) 

prende advantange della ricerca gte campo.

+1

Questo errore si verifica quando datetime.today() è il 1 ° marzo - lo scorso mese era febbraio, non gennaio. Se non hai bisogno di essere esatto, funzionerà bene (30 giorni fa = il mese scorso) ma se hai davvero bisogno di sapere cosa è successo il mese scorso, non c'è un modo semplice per farlo in Python (PER QUANTO NE SO). –

+1

c'è * relatiedelta * in ** python-dateutil ** che può darti esattamente il mese scorso. – Neutralizer

+0

[Qui] (https://stackoverflow.com/a/9725093/209050) è un modo per ottenere il mese precedente usando nient'altro che "datetime". – mgalgs

4
items = Item.objects.filter(created_date__gte=aMonthAgo) 

Dove aMonthAgo dovrebbe essere calcolato da datetime e timedelta.

Problemi correlati