Tastypie允许删除资源列表中的对象。
我想删除资源的子集。假设我有一个/api/foo/
的api端点,我想用pks列表对/api/foo/
进行删除,只删除那些对象,而不是集合中的所有对象。
有没有办法用tastypie做到这一点?
答案 0 :(得分:1)
您可以使用负责执行删除的prepend_urls
添加网址。
在您的课程中,将添加以下两种方法。
根据您的需要修改代码。我先在这里进行了身份验证。
def prepend_urls(self):
params = (self._meta.resource_name, trailing_slash())
return [
url(r"^(?P<resource_name>%s)/delete%s$" % params, self.wrap_view('foo_delete'), name="api_foo_delete")
]
## (?P<resource_name>%s) will be /api/foo if your resource name is foo
def foo_delete(self, request, **kwargs):
"""
Get pks to delete from post .
pks = request.POST.getlist('pks[]')
you can use split if you are sending pks by comma separated .
pks = (request.POST.get('pks')).split(',')
"""
self.method_check(request, allowed=['post'])
self.is_authenticated(request)
if request.user and request.user.is_authenticated():
### perform delete operation of pk .
return self.create_response(request, { 'success': True })
else:
return self.create_response(request, { 'success': False, 'error_message': 'You are not authenticated, %s' % request.user.is_authenticated() })