不考虑并发写的情况, Django ORM 的 save 方法也不是幂等的, 而且比较容易被忽略, 比如 def f1(a): a.balance = F('balance') + 1 a.save() def f2(a): a.status = 1 a.save() a = Account.objects.create(balance=0, status=0) with transaction.atomic(): f1(a) ... f2(a)
Django ORM 里面一个容易被忽略的幂等性
Django ORM 里面一个容易被忽略的幂等性
Django ORM 里面一个容易被忽略的幂等性
不考虑并发写的情况, Django ORM 的 save 方法也不是幂等的, 而且比较容易被忽略, 比如 def f1(a): a.balance = F('balance') + 1 a.save() def f2(a): a.status = 1 a.save() a = Account.objects.create(balance=0, status=0) with transaction.atomic(): f1(a) ... f2(a)