首页 > 解决方案 > 在 Django 模型的有序列表中插入元素

问题描述

我试图弄清楚如何在 Django 模型中创建有序的元素列表。

我正在尝试扩展 User 模型以向用户添加军衔(如军衔)。我想按排名对用户进行排序/过滤,并且我想存储一个排名的 svg 图形表示。我想使用排名级别在用户之间建立层次结构,因此排名级别必须是唯一的。最后,如果将来发生变化,我希望能够插入或删除排名。

为此,我为排名创建了一个表格,如下所示:

class Rank(Models.model):
    rank = models.CharField(max_length=30)
    level = models.IntegerField(unique=True)
    image = models.ImageField()

如果我在 2 个已经存在的等级之间插入一个新等级,我想要的是等级字段能够自我更新。

例如,假设我创建了以下排名:

编号 [pk] | 排名 | 水平 | 图片

1 | 士兵| 高分辨率照片| CLIPARTO 1 | 士兵.svg

2 | 中士 | 2 | sergent.svg

然后我想在第 2 级插入“下士”,以便表格如下所示:

编号 [pk] | 排名 | 水平 | 图片

1 | 士兵| 高分辨率照片| CLIPARTO 1 | 士兵.svg

3 | 下士 | 2 | 下士.svg

2 | 中士 | 3 | sergent.svg

在这里,通过在层级插入corporal条目,2层级sergent自动将自身重新编号为3。如果我删除该soldier条目,我希望表格如下所示:

编号 [pk] | 排名 | 水平 | 图片

3 | 下士 | 1 | 下士.svg

2 | 中士 | 2 | sergent.svg

其中corporal 和sergent级别重新编号为12

我不介意必须指定新等级的级别,但我希望更高等级在插入或删除时自动重新排序。我不认为将级别作为主键 (PK) 是一个好主意,因为如果我更新该表,我不一定希望与用户的关系发生变化。我预计该表不会增长太多,因此操作不必非常优化。

答案可能非常简单或显而易见,但我对 Django/python/databases 开发非常陌生。我已经阅读了 django 文档,并在谷歌和这个网站上搜索了答案,但我可以找到我正在寻找的东西。

亲切的问候!

标签: pythonsqldjango

解决方案


推荐阅读