diff --git a/openerp/addons/test_new_api/tests/test_onchange.py b/openerp/addons/test_new_api/tests/test_onchange.py index 88e481c3052..9876d631044 100644 --- a/openerp/addons/test_new_api/tests/test_onchange.py +++ b/openerp/addons/test_new_api/tests/test_onchange.py @@ -307,7 +307,12 @@ class TestOnChange(common.TransactionCase): # When one2many domain contains non-computed field, things are ok self.assertEqual(result['value']['important_messages'], - [(5,)] + [(4, msg.id) for msg in discussion.important_messages]) + [(5,)] + [(1, msg.id, { + 'name': msg.name, + 'body': msg.body, + 'author': (msg.author.id, msg.author.display_name), + 'size': msg.size + }) for msg in discussion.important_messages]) # But here with commit 5676d81, we get value of: [(2, email.id)] self.assertEqual( diff --git a/openerp/fields.py b/openerp/fields.py index 6ccc6325f83..635d5db10ad 100644 --- a/openerp/fields.py +++ b/openerp/fields.py @@ -1915,9 +1915,8 @@ class One2many(_RelationalMulti): _column_limit = property(attrgetter('limit')) def convert_to_onchange(self, value, fnames=None): - if fnames: - # do not serialize self's inverse field - fnames = [name for name in fnames if name != self.inverse_name] + fnames = set(fnames or value.fields_view_get()['fields']) + fnames.discard(self.inverse_name) return super(One2many, self).convert_to_onchange(value, fnames)