我在django有一个模型,它包含一个财政年度的开始和结束日期以及需求量的值。
start_date = models.DateField(null=True)
end_date = models.DateField(null=True)
new_demand = models.PositiveIntegerField(default=0)我希望在可能与数据的日期范围不一致的给定日期范围上过滤这些数据,从可能位于筛选日期范围内某个位置的每个数据点获取一定比例的需求。我假设我需要计算出数据点是否落在过滤器的边缘,并将需求除以过滤器内的天数?但我很难写这篇文章。如有任何帮助,将不胜感激!)
发布于 2022-06-22 10:02:25
如果不需要在数据库中进行计算,则可以筛选重叠日期范围(here很好地显示何时范围重叠),并在python中迭代查询集时执行计算:
for obj in MyModel.objects.filter(start_date__lte=end, end_date__gte=start):
overlap = min(end, obj.end_date) - max(start, start_date)
proportion = (obj.end_date - obj.start_date) / overlap
print(obj, "demand in overlapping range:", obj.new_demand * proportion)https://stackoverflow.com/questions/72712834
复制相似问题