Подтвердить что ты не робот

Django ORM, группа за днем

Я пытаюсь сгруппировать продукты по DAY, однако date_created - это поле datetime.

Product.objects.values('date_created') \
               .annotate(available=Count('available_quantity'))

возвращает:

[
    {'date_created': datetime.datetime(2012, 4, 14, 13, 3, 6), 'available': 1},
    {'date_created': datetime.datetime(2012, 4, 14, 17, 12, 9), 'available': 1},
    ...
]

Я хочу:

[
    {'date_created': datetime.datetime(2012, 4, 14), 'available': 2}, ...
]

изменить: база данных mySQL

4b9b3361

Ответ 1

Вдохновленный этот вопрос попробуйте это для mysql

Product.objects.extra(select={'day': 'date( date_created )'}).values('day') \
               .annotate(available=Count('date_created'))

Ответ 2

В Django 1.4 вы можете использовать .dates('date_created', 'day') вместо .values().

Попробуйте этот фрагмент кода:

Product.objects.annotate(available=Count('available_quantity')) \
  .dates('date_created', 'day')

Это должно возвратиться:

[
    {'date_created': datetime.datetime(2012, 4, 14), 'available': 2}, ...
]