Django - Как запросить топ товаров для каждой даты в заданном интервале дат, используя агрегацию и фильтрацию результатов TruncDay
Если у меня есть эти 4 модели Order, LineItem, Payment и Product. Как я могу получить наиболее продаваемые продукты в определенные дни?
class Product(models.Model):
sku = models.CharField(...)
...
class Order(models.Model):
...
class LineItem(models.Model):
order = models.ForeignKey(Order, ...)
product = models.ForeignKey(Product, ...)
amount = models.PositiveIntegerField(...)
...
class Payment(models.Model):
order = models.ForeignKey(Order, ...)
paid_at = models.DateTimeField(...)
....
Я пытался подойти к этому с модели LineItem.
ten_days_ago = timezone.now() - timedelta(days=10)
queryset = LineItem.objects.filter(
order__payment__paid_at__gte=ten_days_ago
)
.annotate(date=TruncDay("order__payment__paid_at")
.aggregate(
max_sales=Max(
"amount",
filter=Q(
order__payment__paid_at__gte="date",
order__payment__paid_at__lte=F("date") + timedelta(days=1),
),
)
)
это дает a
django.core.exceptions.ValidationError: ['“date” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.']
Я сомневаюсь, что запрос будет работать даже с действительным форматом даты, но, если предположить, что он будет работать, как мне отформатировать выражение "дата" и F("дата") в действительную дату? И если он действительно не будет работать, как мне сделать запрос в таких случаях? Спасибо.