2014-12-25 2 views
0

Я пытался передать значения условий where на представление базы данных.
View был создан в init метод определения класса.
Ввод в статью where был взят из всплывшего wizard.Wizard input - DB View - Dynamic where where

Проблема заключается в том, что значения формы мастера составляют inserted в таблицу привязки к модели.
Это происходит на всех подает.
В настоящее время я читаю последнюю запись из таблицы на вкладке мастера.
И определение вида изменяется для создания набора результатов на основе последней входной записи из таблицы мастеров.

select v.col1, v.expre2 
    from view_name v, 
     (select fld1, fld2 from wizrd_tbl_1 order by id desc limit 1) as w 
where 
     v.colM between w.fld1 and w.fld2 

В настоящее время я следую приведенной выше последовательности шагов и получаются результаты.
Но я думаю, что это не удастся, если хотя бы два пользователя используют один и тот же мастер одновременно.

Как я могу изменить свой подход, так что
1. Мастер ввода не отправляется в таблице базы данных,
2. Входы направляются к пункту where динамически и результирующий набор связан с List View


в целом, я пытался:

  1. Создает представление базы данных, соединяющее несколько таблицы.
  2. Возьмите пользовательский ввод (и сохраните таблицу db, чего не ожидается, и не требуется).
  3. Передайте пользовательский ввод в предложение where db view. (Любая альтернатива Мастеру?)
  4. Bind результирующего набора в List View

ответ

0

Это, безусловно, плохая идея, чтобы трансформироваться представление базы данных на основе входных данных пользователя, когда эта точка зрения может быть доступен нескольким пользователям.

«Правильным» способом сделать это было бы иметь представление статической базы данных, которое содержит все возможные записи из объединенных таблиц, а затем фильтровать эти данные для отдельных пользователей путем создания «домена» и перенаправления пользователя на древовидное представление с этим доменом.

Вы можете перенаправить пользователя путем создания < типа кнопки = «объект» > который вызывает функцию, например, как показано ниже:

def action_get_results(self, cr, uid, ids, context={}): 
    # Redirect user to results 
    my_domain = ['&', ('col1','=','testval'), ('col2','>',33)] 
    return { 
     'type': 'ir.actions.act_window', 
     'name': 'Search Results', 
     'view_mode': 'tree', 
     'res_model': 'your.osv_memory.model.name', 
     'target': 'new', # or 'current' 
     'context': context, 
     'domain': my_domain, 
    }