【发布时间】:2018-08-20 09:58:11
【问题描述】:
我有: 型号:
id = PrimaryKey()
value = IntegerField()
我想按1-7 和8-30 和>30 之间的值范围获取ID 组列表。
这样做的有效方法是什么?
或者我应该为每个范围编写查询,例如:
one= Model.objects.filter(value__gt=0,value__lte=7).values_list(id)
two= Model.objects.filter(value__gt=7,value__lte=30).values_list(id)
three= Model.objects.filter(value__gt=30).values_list(id)
...
我可以通过aggregate Count 这样做吗?我想要最少的数据库事务。
更新:
实际上我正在尝试获取销售了多少产品,如果它们很快到期,那么每周计数,否则每月计数:
- 牛奶在 3 天后过期。过去 3 年卖出了多少牛奶包
天
- 面包在 7 天后过期。过去 7 天卖出了多少面包。
这里value 是expires_in,即产品在多少天后到期(expiry date - mfg date)
模型是这样的:
发票拆分
product_id
name
desctiption
expires_in
【问题讨论】:
-
你需要数数还是ids?
-
@WillemVanOnsem 更新问题请参阅