我想在Django模型上实现比较和交换(CAS)操作。我想只在数据库中的状态与我认为的状态匹配时才在模型上设置状态。如果没有,我想提出一个例外。
我目前正在将此逻辑实现为:
if 1 != Model.objects.filter(id=obj.id, status=obj.status).update(status=status_to):
raise ConcurrentWorkerException
obj.status = status_to
这是执行此操作的最佳方法还是我应该使用某些ORM级别功能?