Вставка элемента в упорядоченный список в модели Django - PullRequest
1 голос
/ 25 февраля 2020

Я пытаюсь выяснить, как создать упорядоченный список элементов в модели 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 и на этом сайте, но я мог бы понять, что я ищу.

С уважением!

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