-1
class Price(models.Model):
    product = models.ForeignKey(Product)
    date = models.DateField()
    amount = DecimalField()

有模型在许多日期存储许多产品的数量(日期可能在将来的时间)。

示例:
2013 年 1 月 1 日 - 2013 年 1 月 12 日产品 1 金额 10 美元(即从 1.01 到 11.01 的这个值)
- 2013 年 5 月 10 日产品 1 金额 12 美元
- 2013 年 6 月 11 日产品 1 金额 17 美元
- 产品 1 金额 14 美元

2013 年 2 月18 日 - 产品 2 金额 3 美元
2013 年 6 月 12 日 - 产品 2 金额 15 美元

2013 年 4 月 25 日 - 产品 3 金额 11 美元
2013 年 6 月 17 日 - 产品 3 金额 13 美元

数据库后端-MySQL

如何为日期 <= current_date 和用户输入范围内的金额值的每个产品选择实际
金额(和输入该金额的日期) 例如。在日期 14.05.2013 和金额范围 10-20$ 需要结果,查询集中只有两个对象:

Product1   10.05.2013  17$
Product3   25.04.2013  11$ 

UPD。感兴趣的最佳解决方案,不需要很多 SQL 查询,也不需要在代码中评估所有记录的循环。

4

1 回答 1

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()
于 2013-05-12T20:03:40.100 回答