Есть модель:
class MyModel(models.Model):
name = models.CharField()
version = models.IntegerField()
Надо поле version вычислять при сохранении на основе версий инстансов с таким же именем, делаю это так:
def save(self, *args, **kwargs):
if self.version is None:
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)
Вопрос: как тут состояние гонки исключить, чтобы между вычислением версии и сохранением не успела какая-то новая запись добавиться?