在form_valid中递增使用表时的Django Race Condition

时间:2019-05-19 10:10:06

标签: django race-condition

我正在使用基于类的视图。我试图每次用户创建新记录时增加一个值。

#models.py
class User(models.Model)
    transaction_counter = models.PositiveIntegerField(
        default=1, # +1 when new transaction created
    )

class Transaction(models.Model)
    number = models.PositiveIntegerField() # base on the user.transaction_counter

#views.py
class TransactionCreate(CreateView):
model = Transaction

@transaction.atomic
def form_valid(self, form):
    form.instance.number = self.request.user.transaction_counter  # just assign the number
    self.request.user.transaction_counter= F('transaction_counter') + 1
    self.request.user.save()  # now we +1 for the next transaction
    return super().form_valid(form)

问题

由于我已经使用F()来增加user.transaction_counter,这是否解决了竞争条件问题?如果没有,请指导我。如果是,谢谢并爱你。

0 个答案:

没有答案