2009-03-24 7 views
9

Quiero hacer una página archive_index para mi sitio django. Sin embargo, las vistas genéricas basadas en fechas realmente no son de ninguna ayuda. Quiero que el diccionario devuelto por la vista tenga todos los años y meses para los que exista al menos una instancia del tipo de objeto. Así que si mi blog comenzó en septiembre de 2007, pero no hubo mensajes en abril de 2008, podría conseguir algo como estoSeleccione Años y meses distintos para la página de archivo Django

2009 - Jan, Feb, Mar 
2008 - Jan, Feb, Mar, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec 
2007 - Sep, Oct, Nov, Dec

Respuesta

33

esto le dará una lista de fechas de contabilización únicas:

Posts.objects.filter(draft=False).dates('post_date','month',order='DESC') 

Por supuesto podría no necesitar el borrador de filtro, y cambiar 'post_date' a su nombre de campo, etc.

+3

Para cualquier persona que tenga un 'DateTimeField' es simplemente' .datetimes (...) '. – Pureferret

1

Usted debe ser capaz de obtener toda la información que describa de la incorporada en las vistas. ¿Puedes ser más específico en cuanto a lo que no puedes obtener? Esto debería tener todo lo que necesita:

django.views.generic.date_based.archive_month 

Reference page (buscar la cadena por encima de esa página)

+0

No, eso da los objetos reales para el mes. No quiero los objetos. Solo quiero los distintos meses y años. – Apreche

10

Encontré la respuesta a mi propia pregunta.

It's on this page en la documentación.

Hay una función llamada fechas que le dará fechas distintas. Entonces puedo hacer

Entry.objects.dates ('pub_date', 'month') para obtener una lista de objetos datetime, uno para cada año/mes.

+0

Es curioso que pueda responder su propia pregunta. Sin embargo, agregaría tus hallazgos a tu publicación original. –

Cuestiones relacionadas