Question

Dans un django vue, je suis filtre le contenu pour chaque année pour l'afficher dans un graphique via un modèle. Actuellement, je suis en train de faire le calcul pour chaque manuel d'année, mais il doit y avoir une meilleure façon de redresser le code afin qu'il filtre tout le contenu par année sans avoir à coder en dur les années. Toujours dans le modèle de graphique Je suis également hardcoding l'année et je me demandais qui pouvait être écrit sans hardcoding.

content_count_2006 = ContentItem.objects.filter(timestamp__year=2006).count()
content_count_2007 = ContentItem.objects.filter(timestamp__year=2007).count()
content_count_2008 = ContentItem.objects.filter(timestamp__year=2008).count()
content_count_2009 = ContentItem.objects.filter(timestamp__year=2009).count()
content_count_2010 = ContentItem.objects.filter(timestamp__year=2010).count()
content_count_2011 = ContentItem.objects.filter(timestamp__year=2011).count()

content_per_year = [content_count_2006, content_count_2007, content_count_2008, content_count_2009, content_count_2010, content_count_2011]


{% chart VerticalBarStack content_per_year %}
    {% axes type xy %}
    {% axes label "2006" "2007" "2008" "2009" "2010" "2011" %}
    {% color CCCCCC %}
{% endchart %}
Était-ce utile?

La solution

Vous pouvez utiliser une compréhension de la liste:

content_per_year = [ ContentItem.objects.filter(timestamp__year=y).count() \ 
    for y in range(2006, 2012) ]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top