在网址中没有pk的Django UpdateView

时间:2013-07-10 02:53:47

标签: django django-views django-urls django-class-based-views

是否可以从与pk相关的网址中删除UpdateView

例如,如果我有

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

有没有办法像

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

然后在pkPOST请求中将GET作为参数发送?

2 个答案:

答案 0 :(得分:27)

是的,您可能只需要覆盖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

答案 1 :(得分:0)

有时候它是这样的

class MyViewUpdate(UpdateView):
    def get_object(self, queryset=None):
        object = self.model.objects.get(my_id_or_name_of_field=self.kwargs['pk_or_field_name']) # instead of self.request.GET or self.request.POST
        return object