Ho un modello che contiene datefield
. Sto cercando di ottenere il set di query di quel modello che contiene la settimana corrente (inizia il lunedì).Filtraggio del queryset Django secondo il numero ISO della settimana
Quindi dal momento che Django datefield
contiene il semplice modello datetime.date
, ho ipotizzato di filtrare utilizzando .isocalendar()
. Logicamente è esattamente quello che voglio senza paragoni e calcoli extra entro l'attuale giorno della settimana.
Quindi quello che voglio fare in sostanza, è la forza .filter
dichiarazione a comportarsi in questa logica:
if model.date.isocalendar()[2] == datetime.date.today().isocalendar()[2]
...
Ma come scriverlo dentro dichiarazione filtro? .filter(model__date__isocalendar=datetime.date.today().isocalendar())
darà risultati errati (come il confronto con oggi non questa settimana).
Come scavare vero http://docs.python.org/library/datetime.html non ho notato tutte le altre opzioni giorno della settimana ...
Nota da documentazione:
date.isocalendar() Restituisce una tupla di 3 elementi (anno ISO , Numero della settimana ISO, giorno ISO ).
Aggiornamento:
Anche se non mi piaceva la soluzione di utilizzare gamme Eppure è l'opzione migliore. Tuttavia nel mio caso ho fatto una variabile che segna l'inizio della settimana e ho un valore maggiore o uguale perché se sto cercando una partita per la settimana corrente. In caso di dare il numero della settimana richiederebbe entrambe le estremità.
today = datetime.date.today()
monday = today - datetime.timedelta(days=today.weekday())
... \
.filter(date__gte=monday)
Io non so se il supporto ORM che, ma si può fallback a query raw se non https://docs.djangoproject.com/en/dev/topics/db/sql/ – dm03514
Sono a conoscenza di questa opzione dm03514, ma preferisco scrivere il mio filtro quindi. Anche questa è un'opzione, ma sto chiedendo di sapere se è possibile farlo utilizzando le azioni predefinite in Django senza estenderlo. – JackLeo
btw c'è un buon modulo dateutil Python che potrebbe essere utile http://pypi.python.org/pypi/python-dateutil – aisbaa