用于Postgres的Django数据库模型创建和索引

时间:2018-10-03 17:46:22

标签: django postgresql

我正在尝试创建新表并通过Django模型索引Postgres中的列。表创建使用另一个表的设置,索引使用pg_trgm

我可以直接在Postgres上完成

CREATE TABLE my_table (like my_other_table);

并插入数据,例如

INSERT INTO my_table SELECT * FROM MY_OTHER_TABLE TABLESAMPLE BERNOULLI (5);

这会将5%的数据从my_other_table转移到my_table

然后我根据该列编制索引

CREATE INDEX mycolumn_trgm_idx ON my_table USING GIN (my_column gin_trgm_ops);

当我直接在postgres上执行这些操作时没有问题,但是我不知道如何(或者是否可能)通过Django迁移做到这一点

1 个答案:

答案 0 :(得分:0)

我认为这样的事情应该可行。首先创建您的models.py类,以便它们表示您要从中获取数据的表(也有可能自动发现现有数据库-详细信息here)。为了建立索引,您可以在必需的模型类字段中设置index_db=True。设置模型后,通过./manage.py makemigrations./manage.py migrate创建迁移。 Django应该在与其连接的数据库中创建/更新字段。最后,您将需要创建自己的迁移,并从一个表(模型)中获取所需数据,然后将其放入另一表(模型)中。 Here's如何编写自定义迁移。不要忘记在迁移文件中编写必要的函数,因为在迁移过程中Model方法将无法工作。