#python #odoo #odoo-13
Вопрос:
Я пытаюсь обновить одно из многих полей внутри onchange
метода.
Как говорится в документации, я использую update
метод, а не стандартные методы CRUD, такие как create
.
У меня есть этот фрагмент кода:
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)]})
Это почти работает. Я добавляю свою запись в таблицу, но после этого вся таблица просто ломается… Когда этот код выполняется, происходит пара вещей:
- Я не могу сохранить документ, потому что якобы требуемый
unit_amount
не заполнен — он явно должен быть - Когда я пытаюсь отредактировать эту конкретную строку, я не могу этого сделать, потому что это приводит меня к совершенно новой записи без заполнения моих данных (но данные присутствуют в табличном представлении).
- Я не могу добавить новую строку, потому что, когда я нажимаю кнопку, я получаю ошибку
psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "virtual_2509" LINE 1: ...mpany_id" = 1)) AND (("hr_expense"."id" not in ('virtual_2...
Что, черт возьми, происходит. У меня был такой же код, работающий в версии 8.0 без проблем, но это не работает в версии 13.0.
Комментарии:
1. является ли product_id и product_uom_id целочисленным значением?
2. Да, это целое число