我试图覆盖obj_delete来执行预删除验证,以决定是否应该根据提交的数据和数据库数据执行删除。这是我的测试代码。我不确定什么是正确的方法。
但是,我无法理解。请帮助您提供示例代码。
class HelloAuthorization(Authorization):
def delete_detail(self, object_list, bundle):
# Try to decide if delete should be performed HERE. But it is not get called.
# Why??? HELP!!!!
return True
def obj_delete(self, request=None, **kwargs):
try:
obj = self.obj_get(request, **kwargs)
# Try to decide if delete should be performed HERE. But it is not get called.
# Why??? HELP!!!!
except ObjectDoesNotExist:
raise NotFound('A model instance matching the '
'provided arguments could not be found.')
obj.delete()
class HelloResource(ModelResource):
class Meta(object):
queryset = models.HelloModel.objects.all()
allowed_methods = ('get', 'post', 'put', 'delete')
resource_name = 'hello'
authentication = Authentication()
authorization = HelloAuthorization()
filtering = {'name': constants.ALL,
'id': constants.ALL}
def delete_detail(self, object_list, bundle):
# Try to decide if delete should be performed HERE. But it is not get called.
# Why??? HELP!!!!
return True
def obj_delete(self, request=None, **kwargs):
try:
obj = self.obj_get(request, **kwargs)
# Try to decide if delete should be performed HERE. But it is not get called.
# Why??? HELP!!!!
except django_exceptions.ObjectDoesNotExist:
raise NotFound('A model instance matching the '
'provided arguments could not be found.')
obj.delete()
答案 0 :(得分:0)
以下代码尚未经过测试但应该可以使用:
def obj_delete(self, bundle, **kwargs):
_my_object = bundle.obj
# perform validation
if True: # validated
super(AccountsResource, self).obj_delete(bundle, **kwargs)
else:
# TODO
# do my thing here
pass
希望这有帮助。
由于
如果您要在
/api/v1/hello/
上发送请求,obj_delete
不会被调用,要调用该请求,您需要在/api/v1/hello/1/
上发送删除请求