Я пытаюсь изменить значение даты и времени при создании фильтра. Мне нужно сделать каждое значение 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
.