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': … }
.