9

Czy to możliwe, aby usunąć pk z adresu URL związane z UpdateView?Django UpdateView bez pk w adresie URL

Na przykład, jeśli mam

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

jest jakiś sposób, aby zapisać go jak

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

a następnie wysłać pk jako parametr w POST lub GET zamówienie?

+1

Na krótszym alternatywy dla tej odpowiedzi zobaczyć ten post: http://stackoverflow.com/questions/6181041/updating-user- model-in-django-with-class-based-updateview – Staccato

Odpowiedz

25

Tak to jest możliwe po prostu trzeba zastąpić metodę get_object:

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

Czy masz link do implementacji? Dzięki –

+1

ma sens używanie get_object_or_404 do uzyskania obiektu –

+0

Najlepszą praktyką jest nie używanie 'request.GET' do aktualizacji na serwerze. Najlepiej zawsze używać 'request.POST' zamiast tego. – Semmel