Django 1.8 will come with new advanced field types including ArrayField依赖PostgreSQL,并在数据库级别实现。

PostgreSQL的数组字段implements an append method

但是我找不到有关将项目追加到ArrayField的任何文档。这显然非常有用,因为它将允许更新该字段,而无需将其全部内容从db传输回数据库。

这可能吗?如果没有,将来有可能吗?任何我错过的文档的指针将不胜感激。

为了澄清我要问的问题,这很好:

注意:这是幻想代码,我认为这是行不通的(我没有尝试过)

# on model:
class Post(models.Model):
    tags = ArrayField(models.CharField(max_length=200))

# somewhere else:
p = Post.objects.create(tags=[str(i) for i in range(10000)])
p.tags.append('hello')

当前是否有任何方法可以不使用原始sql来做到这一点?

最佳答案

我认为您正在寻找的功能目前尚未实现(可能尚未计划)。许多Postgres贡献功能都有originated based on this kickstarter project

我发现有关新功能的最有用的文档来自source code itself。其中包括许多这些功能的原始pull request链接。

关于提到的数组函数的重要说明,它们是函数,可以说是outside the scope of a typical ORM

希望这些信息对您有所帮助,并且您找到了解决此问题的不错的方法。

关于python - Django 1.8 ArrayField追加和扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29014966/

10-12 16:28