Skip to Content
Menu
This question has been flagged
1 Reply
1689 Views

Hello guys

I'm getting a datetime from a .js file. This datetime have a random time, and I want to modify it
to be 14:00:00 at first time. I have to be able to modify this time later. I'm doing it with an @api.onchange, but then I can't modify the hour. It always return to 14:00:00. 

The best way to do it I think is to execute @api.onchange only once, is it a way to do this? I've tried depends and model to, but doesn't work.

Here es my code


@api.onchange('checkin')
def _get_checkin(self):
if self.checkin:
self.checkin = self.checkin.strftime("%Y-%m-%d 14:00:00")

checkin = fields.Datetime(
"Expected-Date-Arrival",
required=True,
readonly=True,
states={"draft": [("readonly", False)]},
store=True,
)


Avatar
Discard
Best Answer

On way of achieving this could be to create an additional field

field_updated = fields.Boolean(default=False)

After the on_change is called you update this field to True and if this field is True you won't update the value. So that would look something like this

@api.onchange('checkin')
def _get_checkin(self):
if not self.field_updated:
self.checkin = self.checkin.strftime("%Y-%m-%d 14:00:00")
field.field_updated = True
return True

I hope this helps

Avatar
Discard
Related Posts Replies Views Activity
1
Feb 22
2619
1
Feb 22
4809
0
Nov 21
2753
4
Jan 20
5149
1
Jun 15
3467