【发布时间】:2013-03-21 21:42:32
【问题描述】:
我有一个模型变量,我们称它为 .actions,它是一个整数。这个想法是,人们只有在还有行动的情况下才能做事。
如何检查操作是否 > 0 并随后自动减少操作?我不希望他们受到负面影响。
if model.actions > 0:
Model.objects.filter().update(actions=F('actions')-1)
我认为事务不能解决这个问题,因为它们不处理锁定。 select_for_update 似乎解决了这个问题,但该文档也非常不清楚。它会与默认交易设置一起使用还是需要其他设置?
【问题讨论】:
-
我可以把它放在前面:teamQS = Team.objects.select_for_update().filter(id=team.id) 但是我从查询集中得到了团队作为 teamQS[0] 并检查并写信给那个团队。 select_for_update 会在什么时候产生锁?
标签: database django concurrency locking