在网址中没有pk的Django UpdateView

ver*_*4ka 12 django django-urls django-views django-class-based-views

是否有可能pk从与网址相关的消除UpdateView

例如,如果我有

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

有什么方法可以写它

url(r'^myobj/update/$', views.UpdateMyObj.as_view(), name="update")
Run Code Online (Sandbox Code Playgroud)

然后pk作为参数发送POSTGET请求?

Aam*_*nan 33

是的,您可能只需要覆盖该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
Run Code Online (Sandbox Code Playgroud)

  • 使用get_object_or_404获取对象是有意义的 (2认同)