Проблема не связана с переходными моделями, ни двоичными полями, ни с какими-либо из них.
Поле filename
доступно только для чтения, и я только что понял, что произошло с полями только для чтения в сочетании с методами onchange
, тамЭто большая ошибка в Odoo, по моему мнению, до сих пор без исправления - по крайней мере, в версии 9 -:
Если вы измените поле только для чтения в событии onchange
, вы можете работать с OKего новое значение, пока вы не сохраните запись.Когда это происходит, новое значение превращается в старое, и каждый метод, который его использует, получает старое значение.
В моем случае я видел filename
OK в onchange
метод, потому что запись не была сохранена, но когда я нажал на кнопку, которая выполняет метод import_zip
, перед выполнением ее содержимого, запись сохраняется, и из-за ошибки Odoo значение filename
было заменено его старым значением (котороевсегда False
).
Таким образом, в основном решение состоит в том, чтобы сделать поле «не только для чтения» fieldname
:
filename = fields.Char(
string='Filename',
readonly=False,
required=True,
)
А в XML сделать его невидимым, чтобы избежать несоответствий:
<field name="filename" invisible="1"/>