Вы можете обойти «несоответствие импеданса», вызванное отсутствием точности в DateTimeField/date
сравнении объектов, которое может возникнуть при использовании диапазона, с помощью datetime.timedelta, чтобы добавить день к последней дате в диапазоне. Это работает как:
start = date(2012, 12, 11)
end = date(2012, 12, 18)
new_end = end + datetime.timedelta(days=1)
ExampleModel.objects.filter(some_datetime_field__range=[start, new_end])
Как уже говорилось ранее, не делая ничего подобного, записи игнорируются в последний день.
Отредактировано, чтобы избежать использования datetime.combine
- кажется более логичным придерживаться экземпляров даты при сравнении с DateTimeField
, вместо того, чтобы возиться с одноразовыми (и сбивающими с толку) datetime
объектами. Дальнейшее объяснение в комментариях ниже.