DateTime 필드에서 사용자가 등록한 날짜를 계산하려고합니다. 데이터베이스에서 이것은 '2016-10-31 20:49:38'으로 저장되지만 '2016-10-31 '날짜에만 관심이 있습니다.Django는 datetime의 날짜순으로 그룹을 카운트합니다.
원시 SQL 쿼리는 다음과 같습니다
select DATE(registered_at) registered_date,count(registered_at) from User
where course='Course 1' group by registered_date;
그것은 '추가'를 사용 가능하지만이가 사용되지 읽은 및 수행 할 수 없습니다. 그래도 이렇게 작동합니다 :
User.objects.all()
.filter(course='Course 1')
.extra(select={'registered_date': "DATE(registered_at)"})
.values('registered_date')
.annotate(**{'total': Count('registered_at')})
여분을 사용하지 않고 할 수 있습니까? 그래서 TruncDate으로 잘못되어 가고 뭔가가
User.objects.all()
.filter(course='Course 1')
.annotate(registered_date=TruncDate('registered_at'))
.values('registered_date')
.annotate(**{'total': Count('registered_at')})
내가 <QuerySet [{'total': 508346, 'registered_date': None}]>
를 얻을 :
누구든지 나를보다 잘 이해하고 올바른 방향으로 나를 가리킬 수 있다면 그것은 많이 감사 할 것입니다.
도움 주셔서 감사합니다.
from django.db.models import Count
User.objects.values_list('registered_at')\
.filter(course=1)\
.annotate(count_user=Count('registered_at'))\
와
나는 단지 여분을 사용할 것입니다. 이것은 정확하게 만들어진 것입니다. 사용 중지 된 것은 아니며, 현재로서는 문제 해결을위한 유일한 옵션이므로 다른 대안을 우선적으로 제공하지 않고 언제든지 될 것으로 생각하지 마십시오. 그래서 나는 그것에 대해 걱정하지 않을 것입니다. – serg