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.
Odoo is the world's easiest all-in-one management software.
 It includes hundreds of business apps:
- 客戶關係
- e-Commerce
- 會計
- 庫存
- PoS
- Project
- MRP
此問題已被標幟
            
                1
                
                    回覆
                
            
        
        
            
                5332
                
                    瀏覽次數
                
            
        
    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
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'
| 相關帖文 | 回覆 | 瀏覽次數 | 活動 | |
|---|---|---|---|---|
|  | 0 7月 22  | 4219 | ||
|  | 1 1月 21  | 4019 | ||
|  | 0 12月 21  | 3703 | ||
|  | 2 12月 21  | 6831 | ||
|  | 1 1月 21  | 6000 | 
