Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中的SQL-“0”;订单“;表中记录的字段-由用户定义,可以是任意的,不断更改-我如何做到这一点?_Python_Sql_Django_Postgresql - Fatal编程技术网

Python Django中的SQL-“0”;订单“;表中记录的字段-由用户定义,可以是任意的,不断更改-我如何做到这一点?

Python Django中的SQL-“0”;订单“;表中记录的字段-由用户定义,可以是任意的,不断更改-我如何做到这一点?,python,sql,django,postgresql,Python,Sql,Django,Postgresql,所以我有一个应用程序,用户在其中创建一个列表。用户还可以订购列表中的项目,并可以从列表中添加和删除项目。如果用户先注销,然后从另一台设备登录,则需要按照与之前相同的顺序显示列表 到目前为止,我只是通过在表中的记录中添加一个名为“order”的字段来解决这个问题。假设我有一个800项的清单。如果用户删除项目4,我不能简单地从表中删除该记录——我还必须更新796条记录以反映这些项目的新顺序。如果用户随后添加了一个项目,我不仅要向表中添加一条记录,还要更新每个项目,使其订单数量高于添加新项目的位置 我

所以我有一个应用程序,用户在其中创建一个列表。用户还可以订购列表中的项目,并可以从列表中添加和删除项目。如果用户先注销,然后从另一台设备登录,则需要按照与之前相同的顺序显示列表

到目前为止,我只是通过在表中的记录中添加一个名为“order”的字段来解决这个问题。假设我有一个800项的清单。如果用户删除项目4,我不能简单地从表中删除该记录——我还必须更新796条记录以反映这些项目的新顺序。如果用户随后添加了一个项目,我不仅要向表中添加一条记录,还要更新每个项目,使其订单数量高于添加新项目的位置


我的方法对我来说既昂贵又幼稚。有什么聪明有效的方法来解决这个问题吗?有什么想法吗?谢谢。

您应该实现一个等效的,其中每个节点都有一个指向其上一个和下一个节点的指针

  • 插入节点只是更新上一个/下一个指针,因此不需要更新任何其他内容
  • 删除节点只是更新上一个/下一个指针(通过使它们彼此指向),因此不需要更新任何其他内容

因此,您需要两个字段
previous
next
来代替一个
order
字段,这两个字段指示有序列表中的上一个和下一个节点。

您应该实现一个等价的,其中每个节点都有一个指向其上一个和下一个节点的指针

  • 插入节点只是更新上一个/下一个指针,因此不需要更新任何其他内容
  • 删除节点只是更新上一个/下一个指针(通过使它们彼此指向),因此不需要更新任何其他内容

因此,除了一个
order
字段之外,您还需要两个字段
previous
next
,用于指示排序列表中的上一个和下一个节点。

相关:相关:哇,太好了。我真不敢相信我没有想到。根据你需要做的其他事情,一个单独的链接列表可能也足够了。哇,太好了。我不敢相信我没有想到这一点。取决于你还需要做什么,一个单独的链接列表可能也足够了。