Сортировка дерева по отображаемому имени поля Many2One, а не по ID - PullRequest
0 голосов
/ 01 мая 2020

У меня есть список, который я хочу отсортировать по полю с именем hashtag_id, которое является ссылкой на другую модель.

Эта другая модель имеет определенный / complexe name_get, и это возвращение той функции, которая отображается у пользователя и которую я хочу отсортировать. (Обратите внимание, что результат name_get не сохраняется ни в одном другом столбце)

Просмотреть пример:

<field name="list>
   <tree default_order="hashtag_id">
      <field name="hashtag_id">

Пример данных:

ID / result of name_get()
1 / JFOISEZOEIFJF
2 / RZELKRJREZIUH
3 / AERJEIOZJFDOI

Что увидит пользователь :

JFOISEZOEIFJF
RZELKRJREZIUH
AERJEIOZJFDOI

Что я хотел бы отобразить (обратите внимание на выполненную сортировку):

AERJEIOZJFDOI
JFOISEZOEIFJF
RZELKRJREZIUH

Как сделать default_order="hashtag_id" сортировку по тому, что отображается, а не по идентификатору?

1 Ответ

1 голос
/ 02 мая 2020

Вы можете изменить поле заказа по умолчанию для модели hashtag, поле заказа должно быть полем, используемым для маркировки записей, default: name:

_order = 'name'

Или вы можете добавить связанное поле рядом с hashtag_id:

hashtag_name = fields.Char(related="hashtag_id.name", store=True)

Измените порядок по умолчанию на hashtag_name и сделайте поле невидимым в древовидном представлении:

<tree default_order="hashtag_name">
    <field name="hashtag_id"/>
    <field name="hashtag_name" invisible="True"/>
</tree>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...