[FIX] models: on update, call inverse function on field even when it is stored

The inverse function of a stored computed field was not called when creating or
writing on a record with such a field.
This commit is contained in:
Raphael Collet 2014-10-01 11:32:50 +02:00
parent 5db84cb07e
commit 41b55082ba
1 changed files with 12 additions and 8 deletions

View File

@ -3637,10 +3637,12 @@ class BaseModel(object):
# split up fields into old-style and pure new-style ones
old_vals, new_vals, unknown = {}, {}, []
for key, val in vals.iteritems():
if key in self._columns:
old_vals[key] = val
elif key in self._fields:
new_vals[key] = val
field = self._fields.get(key)
if field:
if field.store or field.inherited:
old_vals[key] = val
if field.inverse and not field.inherited:
new_vals[key] = val
else:
unknown.append(key)
@ -3936,10 +3938,12 @@ class BaseModel(object):
# split up fields into old-style and pure new-style ones
old_vals, new_vals, unknown = {}, {}, []
for key, val in vals.iteritems():
if key in self._all_columns:
old_vals[key] = val
elif key in self._fields:
new_vals[key] = val
field = self._fields.get(key)
if field:
if field.store or field.inherited:
old_vals[key] = val
if field.inverse and not field.inherited:
new_vals[key] = val
else:
unknown.append(key)