Дата поступления предметов в Джанго - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть модель с полем datetime. Я хочу получить таблицу с тремя столбцами: год, месяц и количество элементов за промежуток времени. И я также хочу заказать их от самых новых до самых старых. Я хочу получить что-то вроде этого:

2011 August 4
2011 March 7 

Как вы предлагаете мне это сделать?

Редактировать

Я закончил тем, что делал что-то подобное, но я не уверен, что это лучший путь

query_set = Post.objects.all()
years = query_set.dates("pub_date","year")
date_hierarchy = {}
for year in years:
    date_hierarchy[year] = {}
    months = query_set.filter(pub_date__year=year.year).dates("pub_date","month")
    for month in months:
        date_hierarchy[year][month] = query_set.filter(pub_date__year=month.year,pub_date__month=month.month).count()

Затем в шаблоне:

{% for year, month_dict in date_hierarchy.items %}
    {% for month,post_count in month_dict.items %}
        <li><a href="{% url arsiv_month month.year month.month %}">{{ month|date:"Y E" }} [{{ post_count }}]</a></li>
    {% endfor %}
{% endfor %}

1 Ответ

0 голосов
/ 06 сентября 2011

взгляните на предложение SQL GROUP BY. Джанго поддерживает это. например: Django комментирует группировки по месяцам (второй ответ в связанном вопросе кажется более переносимым, чем принятый ответ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...