class Price(models.Model):
product = models.ForeignKey(Product)
date = models.DateField()
amount = DecimalField()
拥有许多日期(日期可能是未来时间)许多产品的存储金额的模型。
示例:
在1.01.2013上 - 产品1金额10 $(即此值 从1.01到11.01)
在2013年1月12日 - 产品1金额12 $ 10.05.2013 - 产品1金额17 $
于2013年6月11日 - 产品1金额14 $
于18.02.2013 - 产品2金额3 $
于2013年6月12日 - 产品2 金额15美元于2013年4月25日 - 产品3金额11 $
于2013年6月17日 - 产品3 金额13 $
DB Backend-MySQL
如何为每个产品选择实际金额(以及此金额输入的日期),其中日期< = current_date和用户输入范围内的金额值
对于前者日期为2013年5月14日,金额范围为10-20美元
需要在queryset中只有两个对象的结果:
Product1 10.05.2013 17$
Product3 25.04.2013 11$
UPD。感兴趣的最优解决方案,不需要很多SQL查询,也不需要在代码中评估所有记录的循环。
答案 0 :(得分:2)
您可以对日期字段使用lt(小于)和gt(大于)查询集 Django文档:https://docs.djangoproject.com/en/dev/ref/models/querysets/#gt
from datetime import date
products = Product.objects.filter(price__date__lte=date.today(),\
price__amount__range=(start, end).distinct()