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

如何从Python中使用Odoo-8执行查询?,python,postgresql,openerp,odoo,odoo-8,Python,Postgresql,Openerp,Odoo,Odoo 8,我在班级hr\u评估\u面试中有以下功能: @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-%

我在班级
hr\u评估\u面试中有以下功能:

@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\u id
的值更改时,它会更改字段
deadline
的值。再次用于测试

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

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

我尝试在线检查此警告的原因,但没有得到任何帮助。我是否做错了什么?我如何从
@api.onchange(self)
中执行查询?

正如Hardik所说,
cr.execute()
不会直接返回结果。执行查询后,需要从光标中获取值。尝试如下:

@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\u 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

在odoo的核心代码中已经有许多这样的示例可用于执行查询。在这里,执行查询后,您仍然需要调用fetch语句来获得结果。您能提供一些代码吗?谢谢您的回答,但它说:
AttributeError:'NoneType'对象没有属性'fetchone'
::知道是什么吗错了吗?我分别使用Postgres尝试了此查询,效果很好,因此此查询的返回值不是空的。我尝试从中获取数据的数据库是在另一个模型类(hr\u评估\u访问)中定义的,我在同一文件(hr\u评估\u访问)中的另一个模型类中工作.但是,当执行查询时,从哪个模型执行正确并不重要?