我想在django中使用transaction.atomic时没有任何运气,我知道我做错了事,但是我不知道是什么。
class SnapshotView(BaseViewSet):
serializer_class = SnapshotSerializer
@transaction.atomic
def perform_create(self, serializer):
# this will call serializer.save()
snapshot = snapshot = super().perform_create(serializer)
# this will run some code can raise an exception
SnapshotServices.create_snapshot(snapshot=snapshot,
data=serializer.initial_data)
第一个创建新快照的方法将通过第二个方法,但是仍然可以在数据库中看到我的快照实例,为什么? 我在事务处理块中,发生了故障,django是否不应该进行回滚?
第二种方法将引发自定义异常 我读了文档,看来我做的一切都正确。
答案 0 :(得分:0)
我知道了。 我的问题是,当在原子中使用None时,django使用默认数据库。因为我使用的是不同的数据库,所以我只是将using添加到了我的装饰器中 transaction.atomic(使用= MYDB) 那解决了我的问题。