如何从 Python 在 Odoo-8 中执行查询?

How to execute query in Odoo-8 from Python?

我在classhr_evaluation_interview中有如下函数:

@api.onchange('evaluation_id')
def onchange_evalID(self):
    self.deadline=self.env.cr.execute('SELECT date FROM hr_evaluation_evaluation where id=119')

注意:出于测试目的,我只是在查询中给出 id=119

当我给 self.deadline=datetime.now.strftime(%Y-%m-%d %H:%M:%S") 时,它工作正常并在字段 evaluation_id 的值更改时更改字段 deadline 的值。再次只是为了测试。

我真正需要的是执行类似于我提到的查询。但是,当我执行此查询时, deadline 字段上没有打印任何内容。当我检查日志时,我看到这个警告:

WARNING db_name openerp.models: Cannot execute name_search, no _rec_name defined on hr_evaluation.evaluation

我尝试在线查看此警告的原因,但没有任何帮助。难道我做错了什么?如何从 @api.onchange(self)?

中执行查询

正如 Hardik 所说,cr.execute() 不会 return 直接产生结果。执行查询后,您需要从游标中获取值。像这样尝试:

@api.onchange('evaluation_id')
def onchange_evalID(self):
    self.env.cr.execute('SELECT date '
                               'FROM hr_evaluation_evaluation where id=119')
    self.deadline = self.env.cr.fetchone()[0]

如果 evaluation_idhr.evaluation.evaluation 模型的 m2o 字段,您可以尝试下面的代码。您根本不需要执行查询。

@api.onchange('evaluation_id')
def onchange_evalID(self):
    if self.evaluation_id and self.evaluation_id.date:
        self.date = self.evaluation_id.date