Изменить значение даты и времени в результате выражения F () - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь изменить значение даты и времени при создании фильтра. Мне нужно сделать каждое значение scheduled_for до 02:00 следующего дня и сравнить эту дату с другим полем. Поэтому сначала я добавляю 1 день с timedelta(days=1), а затем в аннотации пытаюсь заменить часы и минуты:

bookings = Booking.objects.filter(
    cancel_time__isnull=False
).annotate(
    invoice_date=ExpressionWrapper((F('scheduled_for') +  timedelta(days=1)),
    output_field=models.DateTimeField())
).annotate(
    invoice_time=F('invoice_date').replace(hour=2, minute=0, second=0, microsecond=0)
).filter(invoice_time__gte=F('cancel_time'))

Но эта вещь не работает, и я получил ошибку:

AttributeError: у объекта 'F' нет атрибута 'replace'

Есть ли способ выполнить sh, что я пытаюсь сделать?

PS: Также я я не уверен, стоит ли использовать DurationField или DateTimeField как output_field в ExpressionWrapper.

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