Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
Django更改Postgres ArrayField中项目的顺序_Django - Fatal编程技术网

Django更改Postgres ArrayField中项目的顺序

Django更改Postgres ArrayField中项目的顺序,django,Django,我有一个Django模型,我想使用ArrayField来存储文本文件列表。顺序很重要,我被要求允许用户重新排序。你会怎么做 我在这里搜索过,但什么也没找到。即使Django的官方文档也没有提到这一点。我知道这个问题很老了,但我一直在寻找答案,找到了答案,我想我会发布解决方案,以防对其他人有用 Django Postgres ArrayField基本上是一个列表(至少在您的例子中是这样),因此,一旦您像object.dm_scripts一样访问它,您就可以像处理任何其他列表一样对其进行操作。例如,

我有一个Django模型,我想使用ArrayField来存储文本文件列表。顺序很重要,我被要求允许用户重新排序。你会怎么做


我在这里搜索过,但什么也没找到。即使Django的官方文档也没有提到这一点。

我知道这个问题很老了,但我一直在寻找答案,找到了答案,我想我会发布解决方案,以防对其他人有用

Django Postgres ArrayField基本上是一个列表(至少在您的例子中是这样),因此,一旦您像
object.dm_scripts
一样访问它,您就可以像处理任何其他列表一样对其进行操作。例如,如果需要按字母顺序排序,可以调用:

dm_scripts = ArrayField(models.TextField(blank=True, null=True), default=list)
之后,列表项将保持该顺序。您可以调用它,并在视图中的任何必要位置应用它,使用
def save
方法或其他任何方法

在那之后,这取决于你的想象。实现将真正依赖于UX交互。我认为将列表传递给javascript前端,让用户直观地重新排序,然后将新的顺序应用于列表项(或者许多更优化的方法)是很容易的

ordered_array = sorted(object.dm_scripts)
ordered_array.save()