Расписание Django: Разница между event.get_occurrence () и event.get_occurferences ()? - PullRequest
1 голос
/ 06 марта 2012

На основе Джанго-график . Я не могу найти парня, который сделал это.

Извините, если я что-то упустил, но я пытался получить события, желательно на определенный день.

Когда я использую event.get_occurrence (date), он всегда ничего не возвращает. Но когда я использую event.get_occurferences (before_date, after_date), внезапно обнаруживаются вхождения в ранее предпринятую дату.

Почему это не работает только с одним объектом datetime?

Ответы [ 2 ]

0 голосов
/ 06 марта 2015

Исходя из вышеизложенного комментария, особенно в случае, когда событие не возвращается и вхождение, следующий фрагмент кода ниже может форсировать извлечение вхождения, особенно если вы уверены, что оно существует

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 не возвращает результат.

0 голосов
/ 06 марта 2012

Эта разница, вероятно, заключается в фактическом дизайне этих двух методов. Честно говоря, в целом get_occurrence довольно некорректен. Такой метод всегда должен возвращать что-то , даже если это просто None, но есть сценарии, когда он вообще не возвращается. А именно, если ваше событие не имеет правила и дата, которую вы передали get_occurrence, не совпадает с датой start вашего события, тогда никакое значение не возвращается.

На самом деле с этим ничего нельзя поделать. Это просто некорректный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...