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 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 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