2011-01-15 17 views
1

djangoビューでは、テンプレートを使用してチャートにチャートを表示するために毎年コンテンツをフィルタリングしています。現在、毎年のマニュアルの計算を行っていますが、年をハードコードすることなく年ごとにコンテンツをフィルタリングできるように、コードを変更するより良い方法が必要です。また、チャートのテンプレートでは、私は年をハードコーディングしていて、ハードコーディングなしで書かれているのだろうと思っていました。Djangoビューでハードコーディングなしで日付をフィルタリングするより良い方法

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 %} 

答えて

2

あなたは、リストの内包表記を使用することができます。

content_per_year = [ ContentItem.objects.filter(timestamp__year=y).count() \ 
    for y in range(2006, 2012) ]