Index: django/views/generic/list_detail.py
===================================================================
--- django/views/generic/list_detail.py (revision 4750)
+++ django/views/generic/list_detail.py (working copy)
@@ -1,17 +1,18 @@
 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
 
-def object_list(request, queryset, paginate_by=None, page=None,
-        allow_empty=False, template_name=None, template_loader=loader,
+def object_list(request, sequence=None, paginate_by=None, page=None,
+        allow_empty=False, queryset=None, template_name=None, template_loader=loader,
         extra_context=None, context_processors=None, template_object_name='object',
         mimetype=None):
     """
     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
@@ -40,10 +41,18 @@
             the result number of the first object in the
             object_list (1-indexed)
     """
-    if extra_context is None: extra_context = {}
-    queryset = queryset._clone()
+    if extra_context is None:
+        extra_context = {}
+    if (queryset is not None and sequence is not None) or \
+        not (queryset is not None or sequence is not None):
+        raise (AttributeError,
+        ), "One and only one of queryset and sequence needto be specified."
+    if queryset:
+        sequence = queryset
+    if type(sequence) == QuerySet:
+        sequence = sequence._clone()
     if paginate_by:
-        paginator = ObjectPaginator(queryset, paginate_by)
+        paginator = ObjectPaginator(sequence, paginate_by)
         if not page:
             page = request.GET.get('page', 1)
         try:
@@ -70,10 +79,10 @@
         }, context_processors)
     else:
         c = RequestContext(request, {
-            '%s_list' % template_object_name: queryset,
+            '%s_list' % template_object_name: sequence,
             'is_paginated': False
         }, context_processors)
-        if not allow_empty and len(queryset) == 0:
+        if not allow_empty and len(sequence) == 0:
             raise Http404
     for key, value in extra_context.items():
         if callable(value):
@@ -81,8 +90,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(sequence) == QuerySet:
+            model = sequence.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 or both."
     t = template_loader.get_template(template_name)
     return HttpResponse(t.render(c), mimetype=mimetype)
 
Index: docs/generic_views.txt
===================================================================
--- docs/generic_views.txt      (revision 4750)
+++ docs/generic_views.txt      (working copy)
@@ -681,6 +681,12 @@
 
     * ``queryset``: A ``QuerySet`` that represents the objects.
 
+    * ``sequence``: **New in Django development version**
+      A sequence, such as a list or tuple, that represents the objects. If
+      ``queryset`` is supplied then this argument should not be and if this
+      argument is supplied then ``queryset`` should not be.. If a ``QuerySet``
+      isn't supplied then then the ``template_name`` argument is required.
+
 **Optional arguments:**
 
     * ``paginate_by``: An integer specifying how many objects should be
@@ -721,6 +727,8 @@
 
 If ``template_name`` isn't specified, this view will use the template
 ``<app_label>/<model_name>_list.html`` by default.
+**New in Django development version** This only applies if a ``QuerySet``
+is passed in.
 
 **Template context:**
 

