是否有可能从与UpdateView
相关的URL中删除pk
?
例如,如果我有以下内容:
url(r'^myobj/update/(?P<pk>\d+)/$', views.UpdateMyObj.as_view(), name="update")
有没有办法像这样写
url(r'^myobj/update/$', views.UpdateMyObj.as_view(), name="update")
然后将pk
作为参数发送到POST
或GET
请求中?
是否有可能从与UpdateView
相关的URL中删除pk
?
例如,如果我有以下内容:
url(r'^myobj/update/(?P<pk>\d+)/$', views.UpdateMyObj.as_view(), name="update")
有没有办法像这样写
url(r'^myobj/update/$', views.UpdateMyObj.as_view(), name="update")
然后将pk
作为参数发送到POST
或GET
请求中?
是的,这是可能的,你只需要重写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
request.GET
进行更新。最好始终使用 request.POST
。 - Semmelrequest.GET
是指向服务器发出的 get
请求,而不是 OP 用于更新数据库记录的方法。 - Swiftclass MyViewUpdate(UpdateView):
def get_object(self, queryset=None):
obj = 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 obj
object
用作变量名! - AntonOfTheWoods