如何从 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_id
是 hr.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
我在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_id
是 hr.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