variable template tag registered one not must library ifequal examples python django datetime django-views django-queryset

python - template - Seleccione Distintos años y meses para la página de archivo de Django



ifequal django (3)

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. Entonces, si mi blog comenzó en septiembre de 2007, pero no hubo publicaciones en abril de 2008, podría obtener algo como esto

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


Debería poder obtener toda la información que describe desde las vistas integradas. ¿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

Página de referencia (busque la cadena de arriba en esa página)


Encontré la respuesta a mi propia pregunta.

Está en esta página en la documentación.

Hay una función llamada fechas que te 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.


Esto le dará una lista de fechas de publicación únicas:

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

Por supuesto, es posible que no necesite el filtro de borrador, y cambie ''post_date'' a su nombre de campo, etc.