【发布时间】:2021-07-27 14:31:29
【问题描述】:
我有一个停车位应用程序,我想在其中计算一周中的可用天数以及每天的总可用小时数。
我在不同的城市有不同的时移,有些是全职(例如 7:00-20:00),有些是分开的时间(例如 7:00-14:00 和 16:00-20:00) .
这是我尝试过的循环:
def get_available_hours(self):
_dict = []
time = 0
query_set = TimeTableCity.objects.filter(city_id=self._city_id)
for i in query_set:
initial_hour_datetime = datetime.strptime(i.initial_hour, '%H:%M')
end_hour_datetime = datetime.strptime(i.end_hour, '%H:%M')
time = end_hour_datetime - initial_hour_datetime
_dict.append({i.day_table.id: time.seconds / 3600})
time = 0
return _dict
最后返回的dict如下:
[{4: 5.0}, {4: 4.0}, {5: 5.0}, {5: 4.0}, {1: 5.0}, {1: 4.0}, {2: 5.0}, {2: 4.0}, {3: 5.0}, {3: 4.0}]
键是星期几,值是该班次的小时数。 有没有办法对同一个键的值求和?
【问题讨论】:
-
请分享您的模型:
TimeTableCity和相关模型。 -
完全有必要吗?它按预期工作,我只想用相同的键 @WillemVanOnsem 对值求和
-
@peplover 看起来您使用
CharField而不是TimeField来存储时间?另外,您执行的计算可以很容易地在数据库端完成。正如 Willem Van Onsem 所说,您应该添加您的模型,这样人们就可以提出更好的解决方案。 -
@peplover:最好在 database 级别进行这些聚合,因为这样更快,并且需要更少的带宽。
-
由于我无法修改数据库,我只需要按照我显示的方式进行操作即可。对不起,如果我没有指定
标签: python django dictionary