Django Queryset Postgres

Я пишу queryset, который будет возвращать этот тип

date total_shipping_fee
2021-04-16 5,000
2021-04-17 100,000

где

class Payments(models.Model):
    created = models.DateTimeField()
    ..... 
SELECT DATE(created) from payment_payment .... group by 'created' -> outputs a correct query

Мой вопрос заключается в том, как сделать запрос/ или каст

Payment.objects.filter(created_range=("2021-05-14", "2021-05-14")).values('created').annotate(total_shipping_fee=Sum('total_shipping_fee'))

чтобы я мог иметь queryset в вышеприведенном сыром sql. Я думаю, что это моя проблема, чтобы CAST DATE(created) в django queryset. Спасибо

Вы можете работать с:

from django.db.models import F, Sum

Payment.objects.filter(
    created__date_range=('2021-05-14', '2021-05-14')
).values(create_date=F('created__date')).annotate(
    total_shipping_fee=Sum('total_shipping_fee')
).order_by('create_date')

здесь мы сначала принимаем в качестве значения усеченную дату DateTimeField, а затем используем .order_by(…) [Django-doc] для принудительной группировки по этой дате.

На выходе получается QuerySet словарей, каждый из которых содержит два элемента: { 'create_date': …, 'total_shipping_fee': … }.

Вернуться на верх