Strange behaivior of timezone.now()

You want to do these comparisons using the proper data types and not as string comparisons. See the docs for date in Field lookup

Also see the first paragraph at Time zones | Django documentation | Django
and the docs for django.utils.timezone.now