python - DRF 操作中的原子事务?
问题描述
我试图Django atomic transactions
在第一时间进入。我想知道是否有可能像这样使用它:
class TaskViewSet(MultiSerializerViewSet):
@transaction.atomic
@action(methods=['PATCH'], detail=True)
def move_task(self, request, pk):
# making queries, trying to update them, roll back if last one fails.
return Response("message: SUCCESS", status=_status.HTTP_200_OK)
我搜索了一下——有一些关于如何使用事务的信息,但如果可以将它们与 DRF 一起使用,我没有找到任何信息。
解决方案
class PayViewSet(ModelViewSet):
@action(methods=['PATCH'], detail=True)
@transaction.atomic
def approval(self, request, *args, **kwargs):
sid = transaction.savepoint()
success = something
if success:
transaction.savepoint_commit(sid)
return success_response('yes')
else:
transaction.savepoint_rollback(sid)
return error_response('no')
保存点是可选的,具体取决于您的情况
推荐阅读
- microsoft-graph-api - 如何在图表中获取用户的时区
- .net-core - 是否可以将 .NET Core XUnit 项目作为独立应用程序运行?
- wordpress - 为什么 Bootstrip 网格不工作,但按钮工作?
- ms-access - 尝试将访问表中的每条记录导出为单独的 CSV 文件
- javascript - 从 api 属性接收的 JSON 对象返回未定义
- angularjs - Angular 应用程序,但量角器在某些情况下会找到 Angular,但在其他情况下不会
- angular - 以编程方式单击子组件表单中的按钮
- r - [[ ]] vs $:为什么后者在这个 Datacamp 代码上不起作用?
- tensorflow - Tensorflow 1.4 寻找 libcudnn.so.6 而不是 libcudnn.so.8
- git - 连接到 Github 以自动化克隆和拉取请求时的最佳实践?