2015-10-21 73 views

回答

1

你可以有一个模型从视图中获取数据。事实上,这被报告广泛使用。

但是可用的字段列表需要在模型中定义。

+0

有什么办法可以动态创建上述模型? – Naitik

1

用于创建odoo动态视图,你最好请参阅本 link

下面是解

  • 指定参数_auto =假的OpenERP的对象,所以相当于没有表_columns字典是自动创建的。

  • 添加一个方法init(self,cr),该方法创建与_columns中声明的字段匹配的PostgreSQL视图。

Python代码:

class xyz(osv.osv): 
_name = "xyz" 
_description = "xxx" 

_auto = False 

_columns = { 
      'unique_id': fields.char('Employee ID', size=12), 
      'employee_id': fields.many2one('table3', "Name"), 
     } 

def init(self, cr): 
    openerp.tools.drop_view_if_exists(cr, 'table_preview') 
    cr.execute(""" 
     create or replace view payslip_preview as (
        SELECT * FROM crosstab('SELECT ps.id as id, emp.unique_id as unique_id, emp.id as employee_i 
        FROM table1 psl 
        JOIN table2 ps ON (ps.id = psl.slip_id) 
        JOIN table3 emp ON (emp.id = ps.employee_id) 
        WHERE ps.state IN (''draft'') ORDER BY 1', 
        'SELECT id FROM table4 ORDER BY sequence') AS 
        (
         "id" int, 
         "unique_id" varchar(10), 
         "employee_id" int, 
        ) 
      ) 
     """)