Django UpdateView without pk in url

cansadadeserfeliz picture cansadadeserfeliz · Jul 10, 2013 · Viewed 18k times · Source

Is it possible eliminate pk from url related to UpdateView?

For example, if I have

url(r'^myobj/update/(?P<pk>\d+)/$', views.UpdateMyObj.as_view(), name="update")

is there any way to write it like

url(r'^myobj/update/$', views.UpdateMyObj.as_view(), name="update")

and then send pk as a parameter in POST or GET request?

Answer

Aamir Adnan picture Aamir Adnan · Jul 10, 2013

Yes it is possible you just need to override the get_object method:

from django.views.generic.edit import UpdateView

class UpdateMyObj(UpdateView):
    # .....

    def get_object(self):
        return MyModel.objects.get(pk=self.request.GET.get('pk')) # or request.POST