djangoビューでハードコーディングなしで日付をフィルタリングするより良い方法

StackOverflow https://stackoverflow.com/questions/4700345

  •  11-10-2019
  •  | 
  •  

質問

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 %}
役に立ちましたか?

解決

リストの理解を使用できます。

content_per_year = [ ContentItem.objects.filter(timestamp__year=y).count() \ 
    for y in range(2006, 2012) ]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top