Насколько я понимаю выполнение методов с декораторами @onchange и @depends, почти всегда аргумент self в обоих является набором записей с таким форматом:
res.partner (1, 2, 3) (например, в этом случае для модели res.partner)
Что представляет собой записи, к которым будут применены декорированные методы.
В случаях, когда ORM не восстанавливает идентификатор в базе данных, это происходит потому, что это элемент, который еще не был записан.
Это то, что я узнал из книг о теории Оду, и до сих пор это работало для меня.
Две недели назад после обновления сторонних модулей я стал замечать, что в моих собственных модулях аргумент self всегда возвращал мне (например):
res.partner (объект odoo.models.NewId по адресу 0x7f8c0f604768,)
И так для каждого из методов с этими декораторами.
Для меня это означает, что он не восстанавливает идентификатор в базе данных, а только возвращает его адрес в памяти.
Я пробовал много вещей, чтобы удалить все собственные модули и повторно клонировать их, или создать новую базу данных и установить только собственные модули, или создать новую базу, но только с модулями Odoo, и использовать чистый модуль, созданный командой scaffold или удалить среду IDE и переустановить ее до тех пор, пока не начнется тестирование в экземпляре на другом компьютере и установка моих собственных модулей. Но всегда получаю один и тот же результат.
До этих двух недель методы в моих собственных модулях правильно использовали себя. И обновления касались только сторонних модулей.
Другой интересный момент заключается в том, что как сторонние модули, так и модули Odoo восстанавливают набор записей в переменной self (согласно теории), но не для моих собственных модулей (даже не для базового модуля, созданного с использованием скаффолда. команда).
У меня следующие вопросы: - Почему переменная self использует запись таким образом? - Как я могу исправить эту ошибку, если бы она была?
Большое спасибо заранее!! :)
BaseModel.onchange
, и вы увидите, что запись, в которой происходит изменение, будет заменена записьюNewId
, а происхождение будет сохранено в атрибуте_origin
этой записи. Эта функция / логика используется с момента появления нового API в Odoo v8 (IIRC). - person CZoellner   schedule 18.03.2019