从一开始就可以在没有对象的情况下运行UpdateView吗?

时间:2020-10-14 21:50:38

标签: django

有没有一种方法可以在没有对象的情况下使用UpdateView进行更新,因此我可以通过AJAX进行传递?我想为所有项目创建某种独特的UpdateView,我可以从选择中选择要更新的项目。

我可以使用UpdateView进行此操作,还是需要从头开始对视图进行编码_

2 个答案:

答案 0 :(得分:0)

是的。在UpdateView中,您应该重写get方法(或post方法,具体取决于您要执行的操作),然后可以选择视图执行的操作,例如:

    ...
    def get(self, request, **kwargs):
        if 'id' in kwargs:
            //perform update
        else:
            //do something else with AJAX
    ...

答案 1 :(得分:0)

是的,您可以通过在视图中定义一个get_object函数,然后访问该函数中的相关数据来确定要更新哪个对象来实现此目的。

https://docs.djangoproject.com/en/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.get_object

例如:

class SomeUpdateView(UpdateView):

    ...

    def get_object(self):
        #access info from the URL, like <pk> or <slug>
        object_id = self.kwargs.get('pk')
        
        #alternatively access the request.POST or request.GET data
        some_info = self.request.POST.get('some_info')

        #return a model instance based on some data in this function
        return SomeModel.objects.get(pk=object_id)

    ...