Opened 12 years ago

Closed 11 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 Changed 12 years ago by Adrian Holovaty

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 Changed 11 years ago by Chris Beaven

Triage Stage: UnreviewedDesign decision needed

comment:3 Changed 11 years ago by James Bennett

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