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)
?
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]
If evaluation_id
is m2o
field of hr.evaluation.evaluation
model you can try below code. you don't need to execute query at all.
@api.onchange('evaluation_id')
def onchange_evalID(self):
if self.evaluation_id and self.evaluation_id.date:
self.date = self.evaluation_id.date
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With