Django лучший способ фильтрации дат без жесткого кодирования в представлении - PullRequest
1 голос
/ 15 января 2011

В представлении 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 %}

1 Ответ

2 голосов
/ 15 января 2011

Вы можете использовать понимание списка:

content_per_year = [ ContentItem.objects.filter(timestamp__year=y).count() \ 
    for y in range(2006, 2012) ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...