DRF 操作中的原子事务?

Chi*_*fir 2 python django django-rest-framework

我想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)
Run Code Online (Sandbox Code Playgroud)

我搜索了一些 - 有一些关于如何使用事务的信息,但如果可以将它们与 DRF 一起使用,我没有找到任何信息。

Ykh*_*Ykh 8

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')
Run Code Online (Sandbox Code Playgroud)

保存点是可选的,具体取决于您的情况