【发布时间】:2017-10-26 02:32:38
【问题描述】:
我正在尝试构建一个 django 应用程序,我可以在其中跟踪产品价格随时间的变化。该应用程序会定期获取新价格,绘制图表并显示最近的价格变化历史。
我每天检查一次价格并将该价格和日期时间戳保存到我的模型中。
models.py
Class Product(models.Model):
title = models.CharField(max_length=255)
Class Price(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
date_seen = models.DateTimeField(auto_now_add=True)
price = models.IntegerField(blank=True, null=True)
除了产品的当前价格,我还想显示我收集的所有价格数据的最高和最低。我想获取该值以及该值的日期。到目前为止,我可以获得价值,但我无法获得相应的日期。我正在使用这个:
def price_hla(self):
return Product.objects.filter(price__product=self).aggregate(high_price=Max('price__price'), low_price=Min('price__price'), avg_price=Avg('price___price'))
有什么建议吗?提前致谢!
编辑:根据回复,我有以下内容。我的问题是我得到了彼此独立的 MAX 价格和 MAX 日期。我希望 MAX 价格与该最高价格的日期在同一响应中。
def price_hla(self):
return
Product.objects.filter(price__product=self)[:1].annotate(Max('price__price'), Max('price__date_seen'))`
【问题讨论】:
-
这个这个一模一样?他们似乎正在尝试在没有表连接的情况下找到特定产品的最大值和日期。
-
同样的逻辑适用,无论是否存在表连接。你只有一个外键而不是一个整数。
-
嗯,好的。我用我现在拥有的东西编辑了我的原始帖子,但我的问题是我得到了彼此独立的 MAX 价格和 MAX 日期。我希望 MAX 价格与该最高价格的日期在同一响应中。