Многоколонный индекс Odoo - PullRequest
       39

Многоколонный индекс Odoo

0 голосов
/ 21 декабря 2018

Мне нужно создать индекс из двух столбцов.Я объявил:

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

Но это создает два независимых индекса.Я хотел бы получить составной индекс.Есть идеи, как мне этого добиться?

1 Ответ

0 голосов
/ 21 декабря 2018

Это должно быть сделано непосредственно в базе данных.Odoo поддерживает только автоматическое создание индекса для отдельных столбцов.

Пример из Документация PostgreSQL 9.6

CREATE INDEX test2_mm_idx ON test2 (major, minor);

Редактировать: Вкл. aдоклад, который описан здесь 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)
        """)
...