Вычисление рабочих дней в Django Annotate

Я хотел вычислить рабочие дни в Django annotate. Например, если событие было сгенерировано 7 дней назад, и я хотел узнать, сколько рабочих дней прошло. В соответствии с примером, 7 дней включают [понедельник - воскресенье], а я хотел включить только [понедельник - пятницу], что означает 5 рабочих дней. Я сделал эту логику с помощью некоторого питонического хака, но я хотел сделать это в методе Django annotate(). Чтобы я мог отфильтровать результаты на основе рабочих дней.

Вот пример того, что я сделал на данный момент:

table_values = Table.objects.all().annotate(issue_severity=datetime.utcnow() - F("event__created"))

for table in table_values:
    date = datetime.now(timezone.utc) - table.issue_severity
    dates = (date + timedelta(x + 1) for x in range(table.issue_severity.days))
    table.business_days = sum(day.weekday() < 5 for day in dates)
Вернуться на верх