[Python] How to get a moving average (or max) in time period using Django ORM

Discussão em 'Python' iniciado por Stack, Maio 20, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to work out if it's possible/practical to use the Django ORM to get the highest value in an arbitrary timebox out of the database.

    Imagine a restaurant orders ingredients every day, we might have a simple model that looks like:

    class Order(models.Model):
    date = models.DateField()
    ingredient = models.CharField()
    quantity = models.IntegerField()


    Then I am able to get the sum quantities ordered each week:

    Order.objects.filter(date__gte=start_date, date__lt=end_date)
    .annotate(date=TruncWeek("date"))
    .values("ingredient", "date")
    .annotate(total=Sum("quantity"))
    .order_by("ingredient")


    But now I want to figure out the maximum quanity of each ingredient that has been ordered in any consecutive 7 (or X number of) days, across the filtered date range.

    Is it possible to do this in the ORM?

    Continue reading...

Compartilhe esta Página