4

I'm trying to display blog records for particular author using generic view:

urlpatterns = patterns('',
    url(r'^blog/(?P<uid>[\d+])/$', ListView.as_view(
        queryset=Blog.objects.filter(published=True, author=uid),
    ), name='blog_list'),

But I get NameError: name 'uid' is not defined

Is it possible to use urlconf named groups this way?

Vlad T.
  • 2,568
  • 3
  • 26
  • 40

1 Answers1

3

You need to create your own implementation of ListView like so:

class BlogListView(ListView):
    model = Blog

    def get_queryset(self):
        return super(BlogListView, self).get_queryset().filter(
            published=True, author__id=self.kwargs['uid'])

and then use it in your URLconf:

urlpatterns = patterns('',
    url(r'^blog/(?P<uid>[\d+])/$', BlogListView.as_view(),
        name='blog_list'),

The documentation for class-based generic views is, in my opinion, not quite up to scratch with the rest of the Django project yet - but there are some examples which show how to use ListView in this way:

https://docs.djangoproject.com/en/1.3/topics/class-based-views/#viewing-subsets-of-objects

Rob Golding
  • 3,502
  • 5
  • 26
  • 28