Question

Je veux faire une page archive_index pour mon site django. Cependant, les vues génériques basées sur la date ne sont pas vraiment d'aide. Je veux que le dictionnaire retourné par la vue d'avoir toutes les années et les mois pour lesquels au moins une instance du type d'objet existe. Donc, si mon blog a commencé en Septembre 2007, mais il n'y avait pas de messages en Avril 2008, je pourrais obtenir quelque chose comme ça

2009 - Jan, Feb, Mar
2008 - Jan, Feb, Mar, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
2007 - Sep, Oct, Nov, Dec
Était-ce utile?

La solution

Cela vous donnera une liste des dates d'affichage uniques:

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

Bien sûr, vous ne pourriez pas besoin du projet de filtre, et le changement « POST_DATE » à votre nom de domaine, etc.

Autres conseils

J'ai trouvé la réponse à ma propre question.

Il est sur cette page dans la documentation.

Il y a une fonction appelée dates qui vous donnera les dates distinctes. Je peux donc faire

Entry.objects.dates ( « pub_date », « mois ») pour obtenir une liste d'objets datetime, un pour chaque année / mois.

Vous devriez être en mesure d'obtenir toutes les informations que vous décrivez des vues intégrées. Pouvez-vous être plus précis quant à ce que vous ne pouvez pas obtenir? Cela devrait avoir tout ce dont vous avez besoin:

django.views.generic.date_based.archive_month

Page de référence (recherche de la chaîne ci-dessus sur cette page)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top