Wrong assignment
self.hr_leave_history_ids = [(0,0,values)]
here the field hr_leave_history_ids is a recordset of 'hr.leave.history' object (as it's relational field in v8 style), but you assigning a raw list to it.
If you're adding relation to a single object, then it should be like:
self.hr_leave_history_ids |= self.env['hr.leave.history'].create(values)
as your field type is One2many, potentially there may be need to add multiple records, in such a case you can collect them into your field with the same "|" operator:
for values in values_list:
self.hr_leave_history_ids |= self.env['hr.leave.history'].create(values)
note the "|" in "|=" operator, it's one of the allowed
"Set operations". you can use other set operations as well, if applicable to your case (see
documentation here). Here is relevant quote:
set1 | set2
returns the union of the two recordsets, a new recordset containing all records present in either source
NOTE:
create() method used as an example here, however it does not matter how you acquire a recordset you assign to relational field in it's compute function, either create(), search() or browse() or whatever method yields recordset required may work.