Как увеличить объем уникального IntegerField? - PullRequest
2 голосов
/ 26 февраля 2020

Как выполнить массовое приращение 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...