假设您有一个有序列表。您可以根据名为“index”的模型字段对列表进行排序。所以第一项的索引为0,第二项的索引为1,依此类推......
索引对于该模型对象是唯一的。
你会如何实现这个?
我希望能够创建模型对象的更多实例,其中索引被分配给下一个可用索引(将对象添加到列表的末尾)。然后能够重新排序列表,以便在更改对象的索引时,以下所有对象的索引都会增加一个。
答案 0 :(得分:0)
如果你想要一个增加自身的IntegerField,你可以使用id。它是该模型的独特之处,Django自动生成它。您可以使用
订购<强>逆强>
MyModel.objects.all().order_by('-id')
正常顺序:
MyModel.objects.all().order_by('id')
如果您只有一个包含auto-increment-index的字段,则只有在您可以修改它时才需要创建另一个字段,但如果此索引是唯一的,则无法对其进行编辑以防止重复。我会使用id MyModel.id
此处您有.order_by()
的文档答案 1 :(得分:0)
没有字段可以自动执行此操作。你有没有考虑过使用signals?您可以连接一个检测索引更改的信号,并触发一个函数来更新当前索引大于被删除/更改的对象的索引。
答案 2 :(得分:0)
您可能需要重新考虑您的架构,因为如果您更改列表中第一个元素的索引(可以说100万个元素),那么您将更新100万个对象!您可以为每个对象保存左右“邻居”,并创建一个获取列表的方法。