solving12 solving12 - 3 months ago 96
Python Question

How to execute query in Odoo-8 from Python?

I have the following function in the class

hr_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')


Note: I'm just giving
id=119
in the query for testing purposes.

When I give
self.deadline=datetime.now.strftime(%Y-%m-%d %H:%M:%S")
it works fine and changes the value of field
deadline
when the value of field
evaluation_id
changes. Again for just testing.

What I really need is to execute a query similar to what I mentioned. However when I execute this query nothing is printing on the
deadline
field. When I check the log I see this warning:

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


I tried checking online why this warning, but got no help. Am I doing something wrong? How exactly can I execute query from within
@api.onchange(self)
?

Answer

As Hardik said, cr.execute() doesn't return directly you result. You need to fetch the values from the cursor after executing the query. Try like this:

@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]
Comments