Возврат ежедневного значения продаж за текущий месяц в Django

С помощью приведенной ниже модели я хочу создать функцию, которая возвращает детали ежедневных продаж за текущий месяц. Детали будут представлять собой общее количество продаж за каждый день и сумму продаж за каждый день. Я пробовал использовать ExtractDay и annotate, но не получаю желаемого результата или, возможно, я делаю это неправильно

class Stamping(models.Model):
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        abstract = True

class Order(Stamping):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=300, unique=True)
    price = models.FloatField()
    quantity = models.IntegerField()

В моем местоположении дата - вторник, 2 ноября 2021 года. Таким образом, вывод должен выглядеть следующим образом <QuerySet [{'day': 1, 'count': 9, 'total': 100.0}, {'day': 2, 'count': 7, 'total': 80.0}]> И после сегодняшнего дня я должен также {'day': 3, 'count': 15, 'total': 200.0} и это продолжается до конца месяца, тогда я начну получать данные только за этот месяц

Свяжите модель заказа с моделью штамповки

Измените созданное поле штампа с DateTimr на DateFirld Используйте сельдерей для создания нового объекта штампа в 00:00 каждого нового дня с созданным полем, равным сегодняшней дате. Таким образом, при создании объекта заказа просто получите объект штампа с сегодняшней датой. И когда вы захотите, просто сделайте api для возврата связанных заказов с сегодняшним объектом штамповки, используя связанное имя, указанное в поле внешнего ключа, соединяющего заказ с штамповкой

Ниже приведенный код создает набор запросов, беря атрибуты, которые вы хотите, с помощью поиска, он выдаст отдельные данные дня, количества и общего значения, после чего query_set store создаст или сохранит их, как вы хотите

вы можете добавить их в одну модель и вызывать их по фильтру из filter

views.py

from django.db.models import Q


def get_queryset(self):
            qlookup1 = Q(day=self.request.value)
            qlookup2 = Q(count=self.request.value)
            qlookup3 = Q(total=self.request.value)
            queryset = model.objects.filter(qlookup1 | qlookup2 | qlookup3).distinct()
            active = self.request.query_params.get('active', True)
            try:
                queryset = queryset.filter(is_active=active)
                return queryset
            except Exception as error:
                return queryset.none()

если вам нужен плоский форматный кверисет, то вы можете использовать drf_multiple_model

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