Bạn có thể vượt qua "sự không phù hợp trở kháng" do thiếu độ chính xác trong DateTimeField/date
so sánh đối tượng - điều đó có thể xảy ra nếu sử dụng phạm vi - bằng cách sử dụng datetime.timedelta để thêm một ngày vào ngày cuối cùng trong phạm vi. Điều này hoạt động như:
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])
Như đã thảo luận trước đây, không làm điều gì đó như thế này, hồ sơ sẽ bị bỏ qua vào ngày cuối cùng.
Được chỉnh sửa để tránh việc sử dụng datetime.combine
- có vẻ hợp lý hơn để gắn bó với các trường hợp ngày khi so sánh với a DateTimeField
, thay vì gây rối với datetime
các đối tượng vứt bỏ (và khó hiểu) . Xem giải thích thêm trong ý kiến dưới đây.