Odoo多栏索引

时间:2018-12-21 13:09:37

标签: odoo odoo-8 odoo-10

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

field_A= fields.Float(string='A', index=True) 
field_B= fields.Float(string='B', index=True)

但这会创建两个独立的索引。我想获得一个综合索引。知道我该如何实现吗?

1 个答案:

答案 0 :(得分:3)

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

来自PostgreSQL 9.6 Documentation

的示例

CREATE INDEX test2_mm_idx ON test2 (major, minor);

编辑:在a talk which is documentated here上,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)
        """)