Index: django/views/generic/date_based.py
===================================================================
--- django/views/generic/date_based.py	(revision 8467)
+++ django/views/generic/date_based.py	(working copy)
@@ -129,7 +129,10 @@
         last_day = first_day.replace(year=first_day.year + 1, month=1)
     else:
         last_day = first_day.replace(month=first_day.month + 1)
-    lookup_kwargs = {'%s__range' % date_field: (first_day, last_day)}
+    lookup_kwargs = {
+        '%s__gte' % date_field: first_day,
+        '%s__lt' % date_field: last_day,
+    }
 
     # Only bother to check current date if the month isn't in the past and future objects are requested.
     if last_day >= now.date() and not allow_future:
@@ -188,7 +191,10 @@
     # Calculate first and last day of week, for use in a date-range lookup.
     first_day = date
     last_day = date + datetime.timedelta(days=7)
-    lookup_kwargs = {'%s__range' % date_field: (first_day, last_day)}
+    lookup_kwargs = {
+        '%s__gte' % date_field: first_day,
+        '%s__lt' % date_field: last_day,
+    }
 
     # Only bother to check current date if the week isn't in the past and future objects aren't requested.
     if last_day >= now.date() and not allow_future:
Index: tests/regressiontests/views/tests/generic/date_based.py
===================================================================
--- tests/regressiontests/views/tests/generic/date_based.py	(revision 8467)
+++ tests/regressiontests/views/tests/generic/date_based.py	(working copy)
@@ -1,71 +1,92 @@
-# coding: utf-8 
-from django.test import TestCase 
-from datetime import datetime 
-from datetime import timedelta 
-from regressiontests.views.models import Article, Author
+# coding: utf-8
+from django.test import TestCase
+from datetime import datetime
+from datetime import timedelta
+from regressiontests.views.models import Article, Author, DateArticle
 
 class ObjectDetailTest(TestCase):
-    fixtures = ['testdata.json'] 
-    def setUp(self): 
+    fixtures = ['testdata.json']
+    def setUp(self):
         # Correct the date for the current article
         current_article = Article.objects.get(title="Current Article")
-        current_article.date_created = datetime.now() 
-        current_article.save() 
-         
-    def test_finds_past(self): 
+        current_article.date_created = datetime.now()
+        current_article.save()
+
+    def test_finds_past(self):
         "date_based.object_detail can view a page in the past"
-        response = self.client.get('/views/date_based/object_detail/2001/01/01/old_article/') 
-        self.assertEqual(response.status_code, 200) 
-        self.assertEqual(response.context['object'].title, "Old Article") 
- 
-    def test_object_detail_finds_today(self): 
+        response = self.client.get('/views/date_based/object_detail/2001/01/01/old_article/')
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.context['object'].title, "Old Article")
+
+    def test_object_detail_finds_today(self):
         "date_based.object_detail can view a page from today"
-        today_url = datetime.now().strftime('%Y/%m/%d') 
-        response = self.client.get('/views/date_based/object_detail/%s/current_article/' % today_url) 
-        self.assertEqual(response.status_code, 200) 
-        self.assertEqual(response.context['object'].title, "Current Article") 
- 
-    def test_object_detail_ignores_future(self): 
+        today_url = datetime.now().strftime('%Y/%m/%d')
+        response = self.client.get('/views/date_based/object_detail/%s/current_article/' % today_url)
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.context['object'].title, "Current Article")
+
+    def test_object_detail_ignores_future(self):
         "date_based.object_detail can view a page from the future, but only if allowed."
-        response = self.client.get('/views/date_based/object_detail/3000/01/01/future_article/') 
-        self.assertEqual(response.status_code, 404) 
+        response = self.client.get('/views/date_based/object_detail/3000/01/01/future_article/')
+        self.assertEqual(response.status_code, 404)
 
-    def test_object_detail_allowed_future_if_enabled(self): 
+    def test_object_detail_allowed_future_if_enabled(self):
         "date_based.object_detail can view a page from the future if explicitly allowed."
         response = self.client.get('/views/date_based/object_detail/3000/01/01/future_article/allow_future/')
-        self.assertEqual(response.status_code, 200) 
-        self.assertEqual(response.context['object'].title, "Future Article") 
-	 
-class MonthArchiveTest(TestCase): 
-    def test_archive_month_includes_only_month(self): 
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.context['object'].title, "Future Article")
+
+class MonthArchiveTest(TestCase):
+    def test_archive_month_includes_only_month(self):
         "Regression for #3031: Archives around Feburary include only one month"
         author = Author(name="John Smith")
         author.save()
 
-        # 2004 was a leap year, so it should be weird enough to not cheat 
-        first_second_of_feb = datetime(2004, 2, 1, 0, 0, 1) 
-        first_second_of_mar = datetime(2004, 3, 1, 0, 0, 1) 
-        two_seconds = timedelta(0, 2, 0) 
-        article = Article(title="example", author=author) 
+        # 2004 was a leap year, so it should be weird enough to not cheat
+        first_second_of_feb = datetime(2004, 2, 1, 0, 0, 1)
+        first_second_of_mar = datetime(2004, 3, 1, 0, 0, 1)
+        two_seconds = timedelta(0, 2, 0)
+        article = Article(title="example", author=author)
 
-        article.date_created = first_second_of_feb 
-        article.save() 
-        response = self.client.get('/views/date_based/archive_month/2004/02/') 
-        self.assertEqual(response.status_code, 200) 
-      
-        article.date_created = first_second_of_feb-two_seconds 
-        article.save() 
-        response = self.client.get('/views/date_based/archive_month/2004/02/') 
-        self.assertEqual(response.status_code, 404) 
+        article.date_created = first_second_of_feb
+        article.save()
+        response = self.client.get('/views/date_based/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 200)
 
-        article.date_created = first_second_of_mar-two_seconds 
-        article.save() 
-        response = self.client.get('/views/date_based/archive_month/2004/02/') 
-        self.assertEqual(response.status_code, 200) 
+        article.date_created = first_second_of_feb-two_seconds
+        article.save()
+        response = self.client.get('/views/date_based/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 404)
 
-        article.date_created = first_second_of_mar 
-        article.save() 
-        response = self.client.get('/views/date_based/archive_month/2004/02/') 
-        self.assertEqual(response.status_code, 404) 
-	         
-	 
\ No newline at end of file
+        article.date_created = first_second_of_mar-two_seconds
+        article.save()
+        response = self.client.get('/views/date_based/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 200)
+
+        article.date_created = first_second_of_mar
+        article.save()
+        response = self.client.get('/views/date_based/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 404)
+
+        article2 = DateArticle(title="example", author=author)
+
+        article2.date_created = first_second_of_feb.date()
+        article2.save()
+        response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 200)
+
+        article2.date_created = (first_second_of_feb-two_seconds).date()
+        article2.save()
+        response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 404)
+
+        article2.date_created = (first_second_of_mar-two_seconds).date()
+        article2.save()
+        response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 200)
+
+        article2.date_created = first_second_of_mar.date()
+        article2.save()
+        response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 404)
+
Index: tests/regressiontests/views/models.py
===================================================================
--- tests/regressiontests/views/models.py	(revision 8467)
+++ tests/regressiontests/views/models.py	(working copy)
@@ -21,7 +21,6 @@
     title = models.CharField(max_length=100)
     slug = models.SlugField()
     author = models.ForeignKey(Author)
-    date_created = models.DateTimeField()
 
     class Meta:
         abstract = True
@@ -30,11 +29,20 @@
         return self.title
 
 class Article(BaseArticle):
-    pass
+    date_created = models.DateTimeField()
 
 class UrlArticle(BaseArticle):
     """
     An Article class with a get_absolute_url defined.
     """
+    date_created = models.DateTimeField()
+
     def get_absolute_url(self):
         return '/urlarticles/%s/' % self.slug
+
+class DateArticle(BaseArticle):
+    """
+    An article Model with a DateField instead of DateTimeField,
+    for testing #7602
+    """
+    date_created = models.DateField()
Index: tests/regressiontests/views/urls.py
===================================================================
--- tests/regressiontests/views/urls.py	(revision 8467)
+++ tests/regressiontests/views/urls.py	(working copy)
@@ -20,6 +20,7 @@
     'date_field': 'date_created',
     'month_format': '%m',
 }
+date_based_datefield_info_dict = dict(date_based_info_dict, queryset=DateArticle.objects.all())
 
 urlpatterns = patterns('',
     (r'^$', views.index_page),
@@ -48,6 +49,9 @@
     (r'^date_based/archive_month/(?P<year>\d{4})/(?P<month>\d{1,2})/$',
         'archive_month',
         date_based_info_dict),
+    (r'^date_based/datefield/archive_month/(?P<year>\d{4})/(?P<month>\d{1,2})/$',
+        'archive_month',
+        date_based_datefield_info_dict),
 )
 
 # crud generic views.
Index: tests/templates/views/datearticle_archive_month.html
===================================================================
--- tests/templates/views/datearticle_archive_month.html	(revision 0)
+++ tests/templates/views/datearticle_archive_month.html	(revision 0)
@@ -0,0 +1 @@
+This template intentionally left blank
\ No newline at end of file
