9

E 'possibile eliminare pk dall'URL relativo a UpdateView?Django UpdateView senza pk nell'url

Per esempio, se ho

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

Esiste un modo di scrivere come

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

e quindi inviare pk come parametro in POST o GET richiesta?

+1

Per una più breve un'alternativa a questa risposta vedere questo post: http://stackoverflow.com/questions/6181041/updating-user- model-in-django-with-class-based-updateview – Staccato

risposta

25

Sì, è possibile, non vi resta che l'override del metodo 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

Hai un collegamento con l'implementazione? Grazie –

+1

È logico utilizzare get_object_or_404 per ottenere l'oggetto –

+0

Si consiglia di non utilizzare 'request.GET' per gli aggiornamenti sul server. È preferibile utilizzare sempre 'request.POST'. – Semmel