Odoo 多列索引

Day*_*ana 4 odoo odoo-8 odoo-10

我需要创建一个两列索引。我已经声明:

field_A= fields.Float(string='A', index=True) 
field_B= fields.Float(string='B', index=True)
Run Code Online (Sandbox Code Playgroud)

但这会创建两个独立的索引。我想获得一个复合索引。知道我怎么能做到这一点吗?

CZo*_*ner 6

它必须直接在数据库中完成。Odoo 仅支持为单列自动创建索引。

来自PostgreSQL 9.6 文档的示例

CREATE INDEX test2_mm_idx ON test2 (major, minor);

编辑:在此处记录的谈话中, Odoo 建议使用init()模型方法。

您可能需要(在极少数情况下,PostgreSQL 能够组合索引)同时在多个字段上添加自定义类型的索引或索引 -> 使用 init 方法来声明它们

#Example on mail.message, index on two fields
@api.model_cr
def init(self):
    self._cr.execute("""
        SELECT indexname FROM pg_indexes 
        WHERE indexname = 'mail_message_model_res_id_idx'
    """)
    if not self._cr.fetchone():
        self._cr.execute("""
            CREATE INDEX mail_message_model_res_id_idx 
            ON mail_message (model, res_id)
        """)
Run Code Online (Sandbox Code Playgroud)