success_url in UpdateView, based on passed value

Bryce picture Bryce · Jun 14, 2012 · Viewed 37.4k times · Source

How can I set success_url based on a parameter?
I really want to go back to where I came from, not some static place. In pseudo code:

url(r'^entry/(?P<pk>\d+)/edit/(?P<category>\d+)',
    UpdateView.as_view(model=Entry, 
                       template_name='generic_form_popup.html',
                       success_url='/category/%(category)')),

Which would mean: edit entry pk and then return to 'category'. Here an entry can be part of multiple categories.

Answer

Dima Bildin picture Dima Bildin · Jun 14, 2012

Create a class MyUpdateView inheritted from UpdateView and override get_success_url method:

class MyUpdateView(UpdateView):
    def get_success_url(self):
        pass #return the appropriate success url

Also i like to pass such parameters like template_name and model inside of inheritted class view, but not in .as_view() in urls.py