【发布时间】:2016-07-08 19:41:26
【问题描述】:
我有一个 Django 模型,用于模拟与医生预约的患者,如下所示:
class Appointment(Model):
doctor = models.ForeignKey(User)
start = models.DateTimeField()
finish = models.DateTimeField()
...
我想找到在一系列日期时间之间至少有一定长度的可用时隙,如下所示:
def find_timeslots(timeslot_length, start_datetime, finish_datetime):
....
一些观察:
- 从开始到结束的时间相差最多 8 小时
- 约会可以持续一天(例如,我可以有一个从 2016 年 3 月 21 日 22:00:00 开始到 2016 年 3 月 22 日 06:00:00 结束的约会)。
我当前的解决方案是从医生那里获取所有约会,并以 timeslot_length 间隔从 start_datetime 到 finish_datetime 迭代,检查是否存在冲突。如果没有冲突,我将(开始,结束)元组存储在列表中。
它有点工作,但它似乎不是一个优雅的解决方案。有什么更好的方法来解决这个问题?
【问题讨论】: