向导输入 - 数据库视图 - 动态where子句

时间:2014-12-25 00:53:07

标签: python-2.7 openerp-7 odoo

我试图将where条件值传递到数据库视图中 View是在定义的init方法中创建的 输入where子句取自弹出的wizard

问题是向导表单值为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. 将用户输入传递给db view的where子句。 (向导的任何替代方案?)
  4. 将结果集绑定到List View

1 个答案:

答案 0 :(得分:0)

当多个用户可能访问该视图时,基于用户输入变形数据库视图绝对是一个坏主意。

'正确'这样做的方法是拥有一个静态数据库视图,其中包含来自连接表的所有可能记录,然后通过生成"域来过滤单个用户的数据。并将用户重定向到应用了该域的树视图。

您可以通过创建< button type =" object">来重定向用户。它调用如下函数:

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,
    }