[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-13 13:45:52 +02:00
parent 5db84cb07e
commit 41b55082ba
+12 -8
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)