Как изменить приоритет поля для модели django?

У меня есть Модель с полем приоритета типа postitive integer. Это поле уникально и позволяет мне управлять приоритетом объектов. Например, я хочу, чтобы самый важный объект имел приоритет один, второй по важности - приоритет два и т.д...

Пример:

[
{ "name": "object82",
  "priority": 1
}
{ "name": "object54",
  "priority": 2
}
{ "name": "object12",
  "priority": 3
}
]
class MyObject(models.Model):
    name = models.CharField(_("name"), max_length=255)
    priority = models.PositiveSmallIntegerField(_("priority"), unique=True)

Я хочу переопределить сериализатор объектов так, чтобы при добавлении нового объекта с существующим приоритетом, он распаковывал существующие объекты. (то же самое для пути существующего объекта)

Например, если я возьму пример выше и добавлю:

{ "name": "object22",
  "priority": 2
}

Я хочу получить следующий результат:

[
{ "name": "object82",
  "priority": 1          // the priority didn't changed
}
{ "name": "object22",    // my new object
  "priority": 2
}
{ "name": "object54",
  "priority": 3          // the priority had changed
}
{ "name": "object12",    // the priority had changed
  "priority": 4
}
]

Думаю, сначала нужно проверить, существует ли объект с таким же приоритетом в базе данных или нет. Если нет => я сохраняю как есть

Если да, то я должен изменить приоритет некоторых объектов перед добавлением нового объекта.

Как это сделать?

Может быть, что-то вроде:

class MyObjectSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyObject
        fields = '__all__'
        
    def update(self, instance, validated_data):
        
        target_priority = validated_data.get('priority')

        if MyObject.objects.filter(target_priority).exists():
            existing_priorities = MyObject.objects.filter(priority__gte=target_priority)
            for existing_priority in existing_priorities:
                existing_priority.priority += 1
                existing_priority.save(update_fields=['priority'])
        instance.priority = target_priority
        instance.save(update_fields=['priority'])   
Вернуться на верх