我有一个模型变量,我们称它为整数 .actions。这个想法是人们只有在还有行动时才能做事。
如何检查 Action 是否 > 0 并随后自动递减 Action ?我不希望他们出现负面影响。
if model.actions > 0:
Model.objects.filter().update(actions=F('actions')-1)
我认为事务不能解决这个问题,因为它们不处理锁定。 select_for_update似乎解决了这个问题,但该文档也非常不清楚。它会与默认交易设置一起使用还是需要其他设置?
最佳答案
我得到了这个解决方案:
returnValue = MyObject.objects.filter(pk=x, points__gt=0).update(points=F('points')-1)
它仅在满足条件时更新并为您提供一个返回值,您可以检查它是否发生(这意味着这些点是否确实大于 0)。
关于database - Django 原子检查和递减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732891/