ウィジェット「float_time」で float フィールドを使用して時間を表示しました。datetime を float に変換してウィジェットに正しく表示するにはどうすればよいですか?
私のシナリオをもう少し説明します。
日時であるフィールド「start_date」があります。イベント「on_change」で、ウィジェット「float_time」を持つフロートタイプの別のフィールドに時間値を設定したいと考えています。
'start_date': fields.datetime('Fecha Inicio' , required = True),
'h_inicio': fields.float('Hora inicio', help="Hora inicio" , required = True),
ビューで :
<field name="start_date" on_change="onchange_f_inicio(start_date)"/>
<field name="h_inicio" widget="float_time"/>
メソッド on_change
def onchange_f_inicio(self, cr, uid, ids ,fecha_inicio):
res = {'value':{}}
fecha_ini = datetime.strptime(fecha_inicio, "%Y-%m-%d %H:%M:%S")
user = self.pool.get('res.users').browse(cr, uid, uid)
tz = pytz.timezone(user.tz) if user.tz else pytz.utc
fecha_ini = pytz.utc.localize(fecha_ini).astimezone(tz) # convert start in user's timezone
hora_inicio = "%s.%s" % (str(fecha_ini.hour) , str(fecha_ini.minute))
res['value']['h_inicio'] = round(float(hora_inicio),1)
return res
機能する唯一の方法は、日付「start_date」を文字列に変換してから、メソッド on_change によって返される値になるように float に変換することです。
より良い感謝の気持ちを伝える方法を作るお手伝いができれば、このフォームは最善だとは思いません。
ありがとう