我需要创建一个两列索引。我已经声明:
field_A= fields.Float(string='A', index=True)
field_B= fields.Float(string='B', index=True)
但这会创建两个独立的索引。我想获得一个综合索引。知道我该如何实现吗?
答案 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)
""")