Make save parameter of set_multivalue public
It can be useful for performance when setting values for MultiValue field on a large set of records. issue6625 review39491002
This commit is contained in:
1 parent
965f8b0cdb
commit
6d783acf42
2 files changed
+7
-4
No files matched your search
@@ -737,9 +737,12 @@ Instance methods:
|
||||
|
||||
Return the value of the field `name` for the pattern.
|
||||
|
||||
.. method:: MultiValueMixin.set_multivalue(name, value, \*\*pattern)
|
||||
.. method:: MultiValueMixin.set_multivalue(name, value[, save], \*\*pattern)
|
||||
|
||||
Store the value of the field `name` for the pattern.
|
||||
If `save` is true, it will be stored in the database, otherwise the
|
||||
modified :class:`ValueMixin` records are returned unsaved. `save` is true
|
||||
by default.
|
||||
|
||||
.. warning::
|
||||
To customize the pattern, both methods must be override the same way.
|
||||
|
||||
@@ -60,14 +60,14 @@ class MultiValueMixin(object):
|
||||
else:
|
||||
return value
|
||||
|
||||
def set_multivalue(self, name, value, _save=True, **pattern):
|
||||
def set_multivalue(self, name, value, save=True, **pattern):
|
||||
Value = self.multivalue_model(name)
|
||||
values = self.__values(name, pattern, match_none=True)
|
||||
if not values:
|
||||
values = [self.multivalue_record(name, **pattern)]
|
||||
for record in values:
|
||||
setattr(record, name, value)
|
||||
if _save:
|
||||
if save:
|
||||
Value.save(values)
|
||||
else:
|
||||
return values
|
||||
@@ -77,7 +77,7 @@ class MultiValueMixin(object):
|
||||
Value = cls.multivalue_model(name)
|
||||
to_save = []
|
||||
for record in records:
|
||||
to_save.extend(record.set_multivalue(name, val, _save=False))
|
||||
to_save.extend(record.set_multivalue(name, val, save=False))
|
||||
Value.save(to_save)
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user