Django外键订购/位置

Django外键订购/位置,django,model,Django,Model,我有一个Django模型中的项目列表,我希望能够设置项目的顺序。基本上是一个链表 class List(models.Model): name = models.CharField(max_length=255) class Item(models.Model): list = models.ForeignKey(List) position = models.PositiveIntegerField() data = model

我有一个Django模型中的项目列表,我希望能够设置项目的顺序。基本上是一个链表

class List(models.Model):
      name = models.CharField(max_length=255)

class Item(models.Model):
      list     = models.ForeignKey(List)
      position = models.PositiveIntegerField()
      data     = models.AnyField() 

      class Meta:
            unique_together = ('list', 'position')
            ordering = ['position']

这是我心目中的模型。对于列表中的每个ListItem,列表位置必须是唯一的,但也必须没有间隙(例如,删除项目4不会导致位置顺序[1、2、3、5、6])。

在写问题时,我偶然发现了一个错误

然后可以像这样操纵该模型:

list = List.objects.get(id=1)
list.get_item_order() == [1, 2, 3]
可以通过传入项主键列表来设置列表对象的相关项对象的顺序:

list.set_item_order([3, 1, 2])


尚未尝试此代码,请随时更正(评论或编辑)P/K为什么不使用PK而不是位置字段?PK已经给了你唯一的ID,因为PK是为每一个加成而增加的-不管列表FK是什么,也许PK应该放在列表中间。“光队列”对象没有属性“GETHyPosixOrgError”,这个错误是什么?
list.set_item_order([3, 1, 2])