'group by week and get values with week start date and week end date in django
Here is my model Model:
class Order(models.Model):
buyer = models.ForeignKey(Buyer, on_delete=models.CASCADE)
value = models.FloatField(null=True, blank=True)
date = models.DateField(null=True, blank=True)
I need a query to show weekly data with the start date of the week and the end date of the week.
db value:
{'id': 1, 'buyer': 1, 'value': 5000.0, 'date': '01-01-2022'}
{'id': 1, 'buyer': 1, 'value': 1000.0, 'date': '03-01-2022'}
{'id': 1, 'buyer': 1, 'value': 1000.0, 'date': '05-01-2022'}
{'id': 1, 'buyer': 1, 'value': 2000.0, 'date': '07-01-2022'}
{'id': 1, 'buyer': 1, 'value': 4000.0, 'date': '08-01-2022'}
{'id': 1, 'buyer': 1, 'value': 1000.0, 'date': '09-01-2022'}
expected table:
---------------------------------------------
| week | start date | end date | Value |
---------------------------------------------
| 1 | 01-01-2022 | 07-01-2022 | 9000 |
---------------------------------------------
| 2 | 08-01-2022 | 14-01-2022 | 5000 |
---------------------------------------------
Solution 1:[1]
You can use filters with __gte to use as an operator >=.
week_orders = Order.objects.filter(date__gte=START_DATE, date__lte=END_DATE)
Then you have a QuerySet that you can operate further.
from django.db.models import Sum
sum_of_values = week_orders.aggregate(Sum('value'))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | NixonSparrow |
