Object ownership validation in Django UpdateView

后端 未结 2 1662
长情又很酷
长情又很酷 2021-02-11 03:02

EDIT:

The better solution for me was just using a permissions system, especially since I needed other types of controlled access to objects. I now use D

2条回答
  •  清歌不尽
    2021-02-11 03:19

    http://ccbv.co.uk/projects/Django/1.5/django.views.generic.edit/UpdateView/

    Go through the above link to understand how UpdateView works. get_object is supposed to return the model instance, It is not supposed to return HttpResponseRedirect object, that's why you are getting that error.

    Try doing the check in dispatch method like the following.

    def dispatch(self, request, *args, **kwargs):
        """ Making sure that only authors can update stories """
        obj = self.get_object()
        if obj.author != self.request.user:
            return redirect(obj)
        return super(UpdateStory, self).dispatch(request, *args, **kwargs)
    

    PS: I guess it is not recommended to override dispatch. But as you have to do the check on both get and post methods, overriding dispatch will be easier.

提交回复
热议问题