Index: django/views/generic/list_detail.py
===================================================================
--- django/views/generic/list_detail.py	(revision 4229)
+++ django/views/generic/list_detail.py	(working copy)
@@ -1,5 +1,6 @@
 from django.template import loader, RequestContext
 from django.http import Http404, HttpResponse
+from django.db.models.query import QuerySet
 from django.core.xheaders import populate_xheaders
 from django.core.paginator import ObjectPaginator, InvalidPage
 from django.core.exceptions import ObjectDoesNotExist
@@ -11,7 +12,7 @@
     """
     Generic list of objects.
 
-    Templates: ``<app_label>/<model_name>_list.html``
+    Templates: ``<app_label>/<model_name>_list.html`` if queryset is a QuerySet
     Context:
         object_list
             list of objects
@@ -34,8 +35,10 @@
         hits
             number of objects, total
     """
-    if extra_context is None: extra_context = {}
-    queryset = queryset._clone()
+    if extra_context is None:
+        extra_context = {}
+    if type(queryset) == QuerySet:
+        queryset = queryset._clone()
     if paginate_by:
         paginator = ObjectPaginator(queryset, paginate_by)
         if not page:
@@ -73,8 +76,11 @@
         else:
             c[key] = value
     if not template_name:
-        model = queryset.model
-        template_name = "%s/%s_list.html" % (model._meta.app_label, model._meta.object_name.lower())
+        if type(queryset) == QuerySet:
+            model = queryset.model
+            template_name = "%s/%s_list.html" % (model._meta.app_label, model._meta.object_name.lower())
+        else:
+            raise AttributeError, "Generic list view must be called with either a template_name or a queryset (rather than a list)."
     t = template_loader.get_template(template_name)
     return HttpResponse(t.render(c), mimetype=mimetype)
 
Index: docs/generic_views.txt
===================================================================
--- docs/generic_views.txt	(revision 4229)
+++ docs/generic_views.txt	(working copy)
@@ -679,7 +679,9 @@
 
 **Required arguments:**
 
-    * ``queryset``: A ``QuerySet`` that represents the objects.
+    * ``queryset``: A ``QuerySet`` that represents the objects. **New in Django
+      development version**: ``queryset`` may be any sequence such as a list or
+      tuple that represents the objects.
 
 **Optional arguments:**
 
@@ -720,7 +722,9 @@
 **Template name:**
 
 If ``template_name`` isn't specified, this view will use the template
-``<app_label>/<model_name>_list.html`` by default.
+``<app_label>/<model_name>_list.html`` by default. **New in Django development
+version**: In the development version this only applies if ``queryset`` is a
+``QuerySet``.
 
 **Template context:**
 
