Select between two dates with Django

Solution 1:

Use the __range operator:

...filter(current_issue__isnull=True, created_at__range=(start_date, end_date))

Solution 2:

__range

Solution 3:

two methods

.filter(created_at__range=[from_date, to_date])

another method

.filter(Q(created_at__gte=from_date)&Q(created_at__lte=to_date))
  • gte means greater than equal
  • lte means less than equal

Solution 4:

If you are using a DateTimeField, Filtering with dates won’t include items on the last day.

You need to casts the value as date:

...filter(created_at__date__range=(start_date, end_date))