Django更改Postgres ArrayField中项目的顺序

时间:2019-10-18 23:18:20

标签: django

dm_scripts = ArrayField(models.TextField(blank=True, null=True), default=list)

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

我已经在这里搜索和搜索,但是什么也没找到。甚至Django的官方文档也没有提到这一点。

1 个答案:

答案 0 :(得分:0)

我知道这个问题很旧,但是我一直在寻找答案,找到了一个答案,并认为我会发布解决方案,以防其他人使用它

Django Postgres ArrayField本质上是一个列表(至少在您的情况下如此),因此像object.dm_scripts一样访问它之后,就可以像其他任何列表一样对其进行操作。例如,如果您需要按字母顺序排序,则可以调用:

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

此后,列表项将保持该顺序。您可以调用该视图并将其应用到视图中的def save方法或其他任何需要的地方。

这取决于您的想象力。实现方式实际上取决于UX交互。我认为将列表传递到javascript前端很容易,让用户直观地对其重新排序,然后将新的订单应用于列表项(或者可以肯定是更多优化的方法)。