Django计划:event.get_occurrence()和event.get_occurrences()之间的区别?

时间:2012-03-06 18:01:53

标签: django events methods schedule

基于django-schedule。我找不到制作它的人。

请原谅我,如果我错过了某些东西,但我一直试图让事件发生,最好是在某一天。

当我使用event.get_occurrence(date)时,它总是不返回任何内容。但是当我使用event.get_occurrences(before_date,after_date)时,突然出现先前尝试日期的事件。

为什么不能只使用一个日期时间对象?

2 个答案:

答案 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未返回结果时可能出现的问题。