Я пытаюсь выяснить, как создать упорядоченный список элементов в модели Django.
Я пытаюсь расширить модель User, добавив ранг (например, военный ранг) к Пользователь. Я хотел бы отсортировать / отфильтровать пользователей по рангу, и я хотел бы сохранить графическое представление SVG ранга. Я хотел бы использовать уровень ранга, чтобы установить sh иерархию среди пользователей, поэтому уровень ранга должен быть уникальным. Наконец, я хотел бы иметь возможность вставлять или удалять рейтинг, если в будущем произойдут изменения.
Для этого я создал таблицу для рангов, например:
class Rank(Models.model):
rank = models.CharField(max_length=30)
level = models.IntegerField(unique=True)
image = models.ImageField()
То, что я хотел бы, это возможность для поля уровня обновляться, если я вставляю новый ранг между двумя уже существующими рангами.
Например, скажем, я создаю следующие ранги:
id [пк] | ранг | уровень | изображение
1 | солдат | 1 | soldier.svg
2 | сержант | 2 | sergent.svg
Затем я хочу вставить «телесный» на уровне 2, чтобы таблица выглядела следующим образом:
id [pk] | ранг | уровень | изображение
1 | солдат | 1 | soldier.svg
3 | капрал | 2 | corporal.svg
2 | сержант | 3 | sergent.svg
Здесь при вставке записи corporal
на уровне 2
уровень sergent
автоматически перенумеровывается в 3
. Если я удалю запись soldier
, я бы хотел, чтобы таблица выглядела так:
id [pk] | ранг | уровень | изображение
3 | капрал | 1 | corporal.svg
2 | сержант | 2 | sergent.svg
, где уровни corporal
и sergent
перенумеровываются в 1
и 2
.
Я не против указывать уровень нового ранга, но я бы хотел, чтобы более высокие ранги автоматически переупорядочивались при вставке или удалении. Я не думаю, что иметь уровень, являющийся первичным ключом (PK), - хорошая идея, поскольку я не обязательно хочу, чтобы отношение с пользователем изменилось, если я обновлю эту таблицу. Я не ожидаю, что эта таблица сильно вырастет, поэтому операция не должна быть очень оптимальной.
Ответ может быть очень простым или очевидным, но я очень новичок в разработке Django / python / database , Я прочитал документацию django, и я искал ответ в Google и на этом сайте, но я мог бы понять, что я ищу.
С уважением!