基于django-schedule。我找不到制作它的人。
请原谅我,如果我错过了某些东西,但我一直试图让事件发生,最好是在某一天。
当我使用event.get_occurrence(date)时,它总是不返回任何内容。但是当我使用event.get_occurrences(before_date,after_date)时,突然出现先前尝试日期的事件。
为什么不能只使用一个日期时间对象?
答案 0 :(得分:0)
这种差异可能在这两种方法的实际设计中。坦率地说,get_occurrence
总的来说是相当有缺陷的。像这样的方法应该总是返回某些东西,即使它只是None
,但有些情况下它根本不会返回。也就是说,如果您的活动没有套餐,并且您传递的日期get_occurrence
与您的活动的start
不同,则不会返回任何值。
对此没有什么可以做的。这只是有缺陷的代码。
答案 1 :(得分:0)
基于上述注释,特别是在事件未返回和发生的情况下,下面的以下片段可以强制检索事件,尤其是当您确定它存在时
from dateutil.relativedelta import relativedelta
def custom_get_occurrence(event,start_date):
occurrence = event.get_occurrence(start_date)
if occurrence is None:
occurrences = event.get_occurrences(start_date, start_date+relative_delta(months=3)
result = filter(lambda x: x.start==start_date,occurrences)
occurence = result[0]
上述代码解决了默认get_occurrence未返回结果时可能出现的问题。