Opened 18 years ago

Closed 17 years ago

#2544 closed enhancement (invalid)

Pass variables from url handler to the query set of a generic view

Reported by: jon@… Owned by: nobody
Component: Generic views Version:
Severity: normal Keywords:
Cc: Triage Stage: Design decision needed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Adrian Holovaty)

If would be nice if you could pass variables from the url regexp in urls.py to the filter of a query set when using generic views.

(r'^/?(?P<person>\w+)/$', 'django.views.generic.list_detail.object_list', {'queryset': Item.objects.filter(name__name__iexact=person))

Currently, a statement similar to the following will fail with a NameError similar to the below:

NameError at /dave/
name 'person' is not defined
Request Method: GET
Request URL:    http://localhost:8000/dave/
Exception Type: NameError
Exception Value:        name 'dave' is not defined

The ideal behaviour would be that the filter function would be able to accept values from the url dispatcher.

This ticket arises from http://groups.google.com/group/django-users/browse_thread/thread/40c34ae87492d4dd/67cabff7abbbabe5#67cabff7abbbabe5 this discussion on django-users.

Change History (3)

comment:1 by Adrian Holovaty, 18 years ago

Description: modified (diff)

Maybe this?

queryset_func = lambda kwargs: Item.objects.filter(name__name__iexact=kwargs['person'])

(r'^/?(?P<person>\w+)/$', 'django.views.generic.list_detail.object_list', {'queryset_func': queryset_func})

The generic view would call queryset_func(kwargs) at runtime, with kwargs being the dictionary of parameters captured from the URL.

comment:2 by Chris Beaven, 17 years ago

Triage Stage: UnreviewedDesign decision needed

comment:3 by James Bennett, 17 years ago

Resolution: invalid
Status: newclosed

The solution here is to write a wrapper around the generic view.

Note: See TracTickets for help on using tickets.
Back to Top