날짜 필드가있는 기사 모델이 있습니다. 모든 Article 개체에 대해 쿼리를 수행하고 각각의 고유 한 연도와 그 이후의 각 달에 반환되는 데이터 형식을 원합니다. 예컨대Django ORM을 사용하여 날짜 별 개체 정렬 및 그룹화
archives = { 2009: {12, [, , ...], 11: [...]}, 2008: {12, [...], 11: [...]}, }
이 가능한가?
날짜 필드가있는 기사 모델이 있습니다. 모든 Article 개체에 대해 쿼리를 수행하고 각각의 고유 한 연도와 그 이후의 각 달에 반환되는 데이터 형식을 원합니다. 예컨대Django ORM을 사용하여 날짜 별 개체 정렬 및 그룹화
archives = { 2009: {12, [, , ...], 11: [...]}, 2008: {12, [...], 11: [...]}, }
이 가능한가?
이런 종류의 질문은 상당히 자주 제기되는 것 같습니다. 가장 쉬운 솔루션은 데이터를 반복하고 개체를 연도 및 월별로 그룹화하는 것입니다. 보기에서 직접이 작업을 수행하거나 템플릿에 regroup을 사용할 수 있습니다. 그것은 정말로 당신이 데이터로 무엇을하고 싶은지에 달려 있습니다.
응용 프로그램에서 연도 및 월별 아카이브를 그룹화하는 것이 매우 일반적인 경우 save()에서 채울 연도 및 월 필드를 만드는 것이 좋습니다. 나는 개인적으로 논리를 넣어 시도 할 것이다
{% regroup archives by pub_date.year as year_list %}
{% for year in year_list %}
Year: {{ year.grouper }}
{% regroup year.list by pub_date.month as month_list %}
{% for month in month_list %}
Month: {{ month.grouper }}
{% for archive in month.list %}
{{ archive }}
{% endfor %}
{% endfor %}
{% endfor %}
:
arch = {}
for a in Archive.objects.all():
year = arch.get(a.pub_date.year, {})
month = year.get(a.pub_date.month, [])
month.append(a)
year[a.pub_date.month] = month
arch[a.pub_date.year] = year
또는 (테스트되지 않은) regroup를 사용하여 템플릿에 모든 그룹의 논리를 밀어 :
는 손으로는 다음과 같이 될 수있다 템플릿 대신보기에서 여기
몇 가지 관련 게시물이 있습니다 :
나는 원시 MySQL의 쿼리 (YYYY_MM 같은 떨어지게)를 사용하여 새 필드를 만들 수있는 아이디어를 가지고 그 후에 아카이브를 채우기 위해'map'을 사용합니다. –