Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
1 Răspunde
4655 Vizualizări

I'm trying to update One2many field inside onchange method.

As documentation says I'm using update method, and not standard CRUD methods like create.

I have this piece of code:

class HrExpenseSheet(models.Model):
_inherit = "hr.expense.sheet"


@api.onchange('employee_id')
def _update_expense_ids(self):

# define variables ...

values = {
'product_id': product_id,
'name': name,
'product_uom_id': product_uom_id,
'unit_amount': unit_amount,
'quantity': quantity,
'total_amount': total_amount
}

self.update({'expense_line_ids':[(0, 0, values)]})

It almost works. I get my record added to the table but after that whole table just breaks... When this code executes couple things happen:

I'm not able to save the document because supposedly required unit_amount is not filled in - it clearly should be
When I'm trying to edit that particular line I'm not able to because it takes me to a completely new record without my data filled in (but data is present on the table view)
I'm not able to add new row because when I click the button I get error psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "virtual_2509" LINE 1: ...mpany_id" = 1)) AND (("hr_expense"."id" not in ('virtual_2...

What the hell is happening. I've had the same code running on version 8.0 without problem but this does not work on 13.0.

Imagine profil
Abandonează
Cel mai bun răspuns

Hi,

Try update your code like below.

    @api.onchange('employee_id')
def _update_expense_ids(self):
# define variables ...
values = [{
'product_id': product_id,
'name': name,
'product_uom_id': product_uom_id,
'unit_amount': unit_amount,
'quantity': quantity,
'total_amount': total_amount
}]
self.update({'expense_line_ids': [(6, 0, values)]})

Hope it helps

Imagine profil
Abandonează
Autor

Does not work. I get an error

File "/usr/lib/python3/dist-packages/odoo/api.py", line 745, in get

value = self._data[field][record._ids[0]]

TypeError: unhashable type: 'dict'

Related Posts Răspunsuri Vizualizări Activitate
0
iul. 22
3704
1
ian. 21
3438
0
dec. 21
3155
2
dec. 21
6123
1
ian. 21
5238