2011-02-02 1 views
10

У меня есть модель Django с меткой времени created, и я хотел бы получить количество объектов, созданных в каждый день. Я надеялся использовать функциональность агрегации в Django, но я не могу понять, как решить мою проблему. Предполагая, что это не сработает, я всегда могу вернуться только к тому, чтобы получить все даты со значением_list, но я бы предпочел дать работу Django или DB. Как бы вы это сделали?Получить ежедневное количество объектов из Django

+1

http://stackoverflow.com/questions/2278076/count-number-of-records-by-date-in-django –

ответ

23

Алекс указал на правильный ответ в комментарии:

Count number of records by date in Django
Заслуга ara818

Guidoism.objects.extra({'created':"date(created)"}).values('created').annotate(created_count=Count('id'))

from django.db.models import Count 

Guidoism.objects \ 
    # get specific dates (not hours for example) and store in "created" 
    .extra({'created':"date(created)"}) 
    # get a values list of only "created" defined earlier 
    .values('created') 
    # annotate each day by Count of Guidoism objects 
    .annotate(created_count=Count('id')) 

Я изучаю новые трюки каждый день, читая стек .. потрясающий!

0

Используйте count метод:

YourModel.objects.filter(published_on=datetime.date(2011, 4, 1)).count() 
+1

звучит немного дороже, чтобы подсчитывать каждый день, хотя –