如何在PostgreSQL的物化视图中将多对多映射表示为数组字段?

时间:2016-02-12 14:06:23

标签: django postgresql django-postgresql

我正在尝试使用django通过关注this博客帖子在postgresql中创建物化视图。

我的模特是:

class Occasion(models.Model): 
    name = models.CharField(max_length=100)

class ItemType(models.Model):
    name = models.CharField(max_length=100)

class Dress(models.Model):
    name = models.CharField(max_length=100)
    item_type = models.ForeignKey(ItemType)
    occasions = models.ManyToManyField(Occasion)
    # ... more fields

现在,我创建了一个与物化视图相对应的模型(创建此视图的目的是最小化连接查询):

class DressMaterializedView(models.Model):
    name = models.CharField(max_length=100)
    item_type_name = models.CharField(max_length=100)  # note this
    occasion_names = models.ArrayField(  # and this
        models.CharField(max_length=100)  # and compare it with Dress model above
    )

    class Meta:
        managed = False
        db_table = "dresses_dressmv"

现在,我编写什么SQL查询(即CREATE MATERIALIZED VIEW dresses_dressmv ...)来创建我想要的物化视图。

提前致谢。

1 个答案:

答案 0 :(得分:0)

为什么不使用django OR为Django-Postgres提供的Arrayfield你可以选择Jsonfield但是为此需要使用django 1.9和postgres 9.4强制

供参考,您可以查看This