2

我有一个模型变量,我们称它为 .actions,它是一个整数。这个想法是,人们只有在还有行动的情况下才能做事。

如何检查操作是否 > 0 并随后自动减少操作?我不希望他们打负分。

if model.actions > 0:
  Model.objects.filter().update(actions=F('actions')-1)

我认为事务不能解决这个问题,因为它们不处理锁定。select_for_update似乎解决了这个问题,但该文档也非常不清楚。它会与默认交易设置一起使用还是需要其他设置?

4

1 回答 1

0

我得到了这个解决方案:

returnValue = MyObject.objects.filter(pk=x, points__gt=0).update(points=F('points')-1)

仅在满足条件时更新并为您提供返回值,您可以检查它是否发生(这意味着点是否确实大于 0)。

于 2013-04-05T10:39:38.860 回答