OpenERP: сложный интерактивный поиск по нескольким объектам / таблицам - как?

Являются ли Wizards & Transient Models правильным способом для реализации сложного интерактивного поиска по нескольким таблицам (объектам) и для визуализации данных, собранных из нескольких объектов?

"Сложный интерактивный поиск" означает панель поиска с несколькими полями ввода для ввода критериев поиска, где поля ввода динамически фильтруются в соответствии с правилами доступа пользователя и данными из других полей.

"Через несколько таблиц" означает данные, хранящиеся в разных объектах (osv.Model) - т.е. не только в разных таблицах, но и в разных питонах 'objects' (osv.Model),


Моя текущая реализация с использованием мастеров и переходных процессов имеет следующие недостатки:

  • нет способа фильтрации / группировки результатов поиска. Результаты поиска обрабатываются как одно из многих полей, отображаемых в виде дерева в виде формы родительского мастера поиска ==>, следовательно, нет способа сгруппировать результаты в виде формы мастера. Честно говоря, я был бы рад, если бы существовал способ сделать сложный поиск по нескольким объектам из древовидного представления, как мы делаем это с помощью простого поиска по одному объекту.

  • 2 перезагрузки страницы происходят при изменении входных параметров и повторном поиске. Сначала страница обновляется со старыми результатами внутри, а затем через секунду или две (без отображения "Загрузка…") страница обновляется с появлением новых результатов. Этого не происходит, если я выполняю поиск с одними и теми же параметрами несколько раз подряд - тогда происходит только 1 обновление. Это двойное обновление очень неприемлемо для пользователя, поскольку создает впечатление, что поиск не удался (отображаются старые результаты). Вероятно, это происходит потому, что при каждом поиске я создаю новый экземпляр мастера (чтобы сохранить историю поиска до того, как он будет очищен с помощью функции автоочистки) и возвращаю его идентификатор как 'res_id', Однако я создаю копию предыдущего мастера, передавая пустой список в качестве идентификаторов результатов поиска по умолчанию, поэтому я не ожидаю появления старых результатов. Кроме того, я не ожидал, что произойдет второе обновление.

  • Результаты всех предыдущих поисков сохраняются на стороне клиента и просто скрываются на странице, а не полностью удаляются со страницы. ===> делает страницу тяжелой после многих поисков. Например:

    <div class="oe_view_manager oe_view_manager_inline" style="display: none;">
    <div class="oe_view_manager oe_view_manager_inline" style="display: none;">
    <div class="oe_view_manager oe_view_manager_inline" style="display: none;">
    <div class="oe_view_manager oe_view_manager_inline">
    

Здесь: 3 старых набора результатов + текущий активный (видимый). Думаю, я могу избавиться от этих старых результатов, используя JavaScript. Тем не менее, мне интересно, какова цель такого поведения "сохранить и скрыть"?

0 ответов

Другие вопросы по тегам