Как получать одинаковые индексы и менять их местами?

Всем привет. Кратко о проекте: Django-проект, есть элементы Item при добавлении каждого нового - создаётся order_index по порядку (+1 от общего числа), для сортировки. Реализованы 2 функции: up_item которая прибавлеят +1 к order_index, и down_item которая отнимает -1 от order_index.

Проблема: Совпадение индексов order_item. Может получится несколько индексов, например, со значением 2.

Нужно: сделать так, чтобы индексы не повторялись. Чтоб при функции up_item прибавлялся +1 к order_index и отнимался -1 у order_index другого item с таким же значением индекса. И при down_item отнимался -1, но прибавлялся +1 у item с таким же индексом order_index.

Функция выглядит так:

def up_item(request, id):
    item = Item.objects.get(id=id)
    item.order_index +=1
    item.save()
    return redirect('/')
Вернуться на верх