Django Tutorial: Generic Views. Attribute Error
Question: I'm at the last part of
[this](https://docs.djangoproject.com/en/1.4/intro/tutorial04/) tutorial.

    
    
    from django.conf.urls import patterns, include, url
    from django.views.generic import DetailView, ListView
    from polls.models import Poll
    
    urlpatterns = patterns('',
        url(r'^$',
            ListView.as_view(
                queryset=Poll.objects.order_by('-pub_date')[:5],
                context_object_name='latest_poll_list',
                template_name='polls/index.html')),
        url(r'^(?P<pk>\d+)/$',
            DetailView.as_view(
                model=Poll,
                template_name='polls/detail.html')),
        url(r'^(?P<pk>\d+)/results/$',
            DetailView.as_view(
                model=Poll,
                template_name='polls/results.html'),
            name='poll_results'),
        url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),
    )
    

The ListView works, but when I visit a url with DetailView, I get.

    
    
    AttributeError at /polls/2/
    Generic detail view DetailView must be called with either an object pk or a slug.
    Request Method: GET
    Request URL:    http://127.0.0.1:8000/polls/2/
    Django Version: 1.4.1
    Exception Type: AttributeError
    Exception Value:    
    Generic detail view DetailView must be called with either an object pk or a slug.
    Exception Location: /home/yasith/coding/django/django-tutorial/lib/python2.7/site-packages/django/views/generic/detail.py in get_object, line 46
    Python Executable:  /home/yasith/coding/django/django-tutorial/bin/python2
    Python Version: 2.7.3
    

I'm not sure what I'm doing wrong. Any help would be appreciated.

EDIT: Add the main urls.py

    
    
    from django.conf.urls import patterns, include, url
    
    from django.contrib import admin
    admin.autodiscover()
    
    urlpatterns = patterns('',
        url(r'^polls/', include('polls.urls')),
        url(r'^admin/', include(admin.site.urls)),
    )
    


Answer: I think the code you posted above, is not the one you have on your disk.

I had the same problem, but then I looked carefully at both, my code and the
tutorial. The regex I had in my code was different from the tutorial.

This was my code:

    
    
     url(r'^(?P<poll_id>\d+)/$',-$                                               
     url(r'^(?P<poll_id>\d+)/results/$',-$                                       
    

This is the correct core:

    
    
     url(r'^(?P<pk>\d+)/$',-$                                               
     url(r'^(?P<pk>\d+)/results/$',-$                                       
    

Note that *poll_id* was in the previous sections of the tutorial, but generic
views require _pk_. Also note that the tutorial is correct, and you posted the
correct code (from the tutorial.)

