diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 3b7a18edf53..76aecfe2b84 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -823,12 +823,9 @@ class one2many(_column): else: cr.execute('update '+_table+' set '+self._fields_id+'=null where id=%s', (act[1],)) elif act[0] == 4: - # table of the field (parent_model in case of inherit) - field = obj.pool[self._obj]._fields[self._fields_id] - field_model = field.base_field.model_name - field_table = obj.pool[field_model]._table - cr.execute("select 1 from {0} where id=%s and {1}=%s".format(field_table, self._fields_id), (act[1], id)) - if not cr.fetchone(): + # check whether the given record is already linked + rec = obj.browse(cr, SUPERUSER_ID, act[1], {'prefetch_fields': False}) + if int(rec[self._fields_id]) != id: # Must use write() to recompute parent_store structure if needed and check access rules obj.write(cr, user, [act[1]], {self._fields_id:id}, context=context or {}) elif act[0] == 5: