【发布时间】:2019-02-06 14:07:16
【问题描述】:
有示例模型:
class MyModel(models.Model):
name = models.CharField()
version = models.IntegerField()
我需要根据同名实例的最大版本设置version 字段值。为此,我重写 save 方法:
def save(self, *args, **kwargs):
max_version = MyModel.objects \
.filter(name=self.name) \
.aggregate(max_version=Max('version'))['max_version'] or 0
self.version = max_version + 1
super(MyModel, self).save(*args, **kwargs)
这里如何避免竞争条件?
编辑:版本必须是唯一的(在同名的实例之间),但顺序不太重要。
【问题讨论】:
标签: django race-condition