У меня есть модель как:
city = CharField()
order = PositiveIntegerField(default=0)
, и я хотел бы исправить последовательность и сделать ее бесперебойной. Например, если у меня есть:
London 0
Paris 5
Boston 7
Мне нужно удалить пробелы и преобразовать его в:
London 0
Paris 1
Boston 2
Я могу добиться этого с помощью чего-то вроде:
current_order = 0
cities = City.objects.all().order_by('order')
for city in cities:
if not current_order:
current_order = city.order
else:
city.order = current_order
city.save()
current_order += 1
Мне показалось, что это решение совершенно неэффективно, поскольку оно многократно обращается к БД, поэтому я думаю, как добиться более эффективного поведения, предпочтительнее с помощью механизма БД (PostgreSQL).