odoo V.9如何使服务器动作执行sql查询

时间:2017-03-22 15:50:57

标签: python postgresql openerp

我想尝试从销售订单模块中的服务器操作执行查询,并在“更多”菜单中添加操作,但单击操作时发现错误 我在数据库上单独尝试查询并执行得很好 服务器操作中的python代码:

if context.get('active_model') == 'sales.order' and context.get('active_ids'):
    self.Invoiced(cr, uid, context['active_ids'], context=context)

def Invoiced(self):
    for item in self:
        self.env.cr.execute('update sale_order_line as l set qty_invoiced = l.product_uom_qty FROM sale_order s where l.order_id = s.id and s.state = "done"')
    self.deadline = self.env.cr.fetchone()

错误:

  

Odoo服务器错误

     

SyntaxError :扫描字符串文字时的EOL

1 个答案:

答案 0 :(得分:0)

在postgresSql中,你不能对字符串值使用双引号:

使用像这样的双引号

SELECT 
     name as "full name" // here because i'm puttin a space inside the name of the column

您的查询应该是这样的:

self.env.cr.execute(""" 
      update sale_order_line as l set qty_invoiced = l.product_uom_qty FROM sale_order s where l.order_id = s.id and s.state = 'done' 
            """)

使用三引号,这样您就可以将查询拆分为多行,以便将代码格式化为更易读。对不起我的英文^^。