【发布时间】:2015-09-23 01:39:28
【问题描述】:
我有一个带有模型的 API,它需要能够一次删除多个模型。因此,我在该模型的 List 上编写了一个 DELETE 方法。但是,用户可能无权删除某些模型。是否有一种模式可以指示哪些模型已成功删除,哪些没有?我目前的做法是这样的:
class ModelList(APIView):
def delete(self, request, format=None):
models = MyModel.objects.all()
models.filter(<some filtering>)
response = []
for m in models:
if m.deletionForbidden:
response.append("Forbidden")
else:
m.delete()
response.append("No Content")
return Response(response)
但这感觉有点混乱/不直观。有没有更好的办法?
【问题讨论】:
-
您可以返回带有服务器无法删除的 id 的错误对象。顺便提一句。最好禁用这些复选框,这样您就可以省去这种工作并拒绝任何包含不可移动项目的尝试。
-
是否可以将删除作为跨所有元素的单个原子操作进行,如果事务成功完成则返回
204 NO CONTENT,否则如果失败则回滚/返回400 BAD REQUEST?
标签: rest django-rest-framework