Как выполнить массовое приращение IntegerField
с уникальным ограничением?
Например:
class Rank(models.Model):
level = models.IntegerField(unique=True)
>> Rank.objects.create(level=1)
>> Rank.objects.create(level=2)
>> Rank.objects.create(level=3)
>> Rank.objects.all().update(level=F('level')+1)
django.db.utils.IntegrityError: (1062, "Duplicate entry '1' for key 'myapp_rank.level'")
Следующий запрос отлично работает в mysql (при условии SQL_SAFE_UPDATES=0
):
UPDATE myapp_rank t SET t.rank = t.rank + 1;
Есть ли способ сделать это с помощью ORM?