9

是否有可能消除pk從與UpdateView有關的網址?Django UpdateView不帶PK在URL

舉例來說,如果我有

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

有沒有辦法把它寫像

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

然後發送pkPOSTGET請求中的參數?

+1

較短替代這個答案看到這個帖子:http://stackoverflow.com/questions/6181041/updating-user- model-in-django-with-class-based-updateview – Staccato

回答

25

是有可能你只需要重寫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

你有鏈接和實現嗎?謝謝 –

+1

使用get_object_or_404獲取對象是合理的 –

+0

最佳做法是不要在服務器上使用request.GET來更新。最好總是使用'request.POST'來代替。 – Semmel