コンテンツへスキップ
メニュー
この質問にフラグが付けられました
1 返信
2828 ビュー

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,
)


アバター
破棄
最善の回答

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

アバター
破棄
関連投稿 返信 ビュー 活動
2
12月 24
1849
1
2月 22
3706
1
2月 22
6535
0
11月 21
4133
4
1月 20
6146