tengo un modelo que contiene datefield
. Estoy tratando de obtener el conjunto de consultas de ese modelo que contiene la semana actual (comienza el lunes).Django filtrado queryset por número de semana ISO
Así que desde Django datefield
contiene el modelo simple datetime.date
que supuse filtrar usando .isocalendar()
. Lógicamente es exactamente lo que quiero sin tener que hacer comparaciones y cálculos adicionales por día de la semana actual.
Así que lo que quiero hacer es esencialmente la fuerza .filter
comunicado a comportarse de esta lógica:
if model.date.isocalendar()[2] == datetime.date.today().isocalendar()[2]
...
Sin embargo, la forma de escribir dentro de instrucción de filtro? .filter(model__date__isocalendar=datetime.date.today().isocalendar())
dará resultados erróneos (igual que en comparación con hoy en día no esta semana).
como cavar cierto http://docs.python.org/library/datetime.html no he notado ninguna otra opción semana del día ...
Nota de documentación:
date.isocalendar() Devuelve una tupla de 3, (ISO año , Número de semana ISO, ISO entre semana).
Actualización:
Aunque no me gustaba la solución de utilizar rangos sin embargo, es la mejor opción. Sin embargo, en mi caso hice una variable que marca el comienzo de la semana y con tan sólo mirar igual o mayor valor, porque si yo estoy buscando unos resultados para la semana actual. En caso de dar el número de la semana, requeriría ambos extremos.
today = datetime.date.today()
monday = today - datetime.timedelta(days=today.weekday())
... \
.filter(date__gte=monday)
Yo no sé si el apoyo ORM eso, sino que puede repliegue a la consulta sin formato si no lo hace https://docs.djangoproject.com/en/dev/topics/db/sql/ – dm03514
Conozco esta opción dm03514, pero prefiero escribir mi propio filtro. Esa también es una opción, pero estoy preguntando si es posible lograr esto usando acciones predeterminadas en Django sin extenderlo. – JackLeo
por cierto hay un bonito módulo dateutil de python que podría ser útil http://pypi.python.org/pypi/python-dateutil – aisbaa