def set(self, column, value, useMethod=True, **context):
col = self.schema().column(column, raise_=False)<EOL>if col is None:<EOL><INDENT>collector = self.schema().collector(column)<EOL>if collector:<EOL><INDENT>my_context = self.context()<EOL>for k, v in my_context.raw_values.items():<EOL><INDENT>if k not in orb.Context.QueryFields:<EOL><INDENT>context.setdefault(k, v)<EOL><DEDENT><DEDENT>sub_context = orb.Context(**context)<EOL>method = collector.settermethod()<EOL>if method and useMethod:<EOL><INDENT>return method(self, value, context=sub_context)<EOL><DEDENT>else:<EOL><INDENT>records = self.get(collector.name(), context=sub_context)<EOL>records.update(value,<EOL>useMethod=useMethod,<EOL>context=sub_context)<EOL>self.__preload.pop(collector.name(), None)<EOL>return records<EOL><DEDENT><DEDENT>else:<EOL><INDENT>raise errors.ColumnNotFound(schema=self.schema(), column=column)<EOL><DEDENT><DEDENT>elif col.testFlag(col.Flags.ReadOnly):<EOL><INDENT>raise errors.ColumnReadOnly(schema=self.schema(), column=column)<EOL><DEDENT>context = self.context(**context)<EOL>if useMethod:<EOL><INDENT>method = col.settermethod()<EOL>if method:<EOL><INDENT>keywords = list(funcutil.extract_keywords(method))<EOL>if '<STR_LIT>' in keywords:<EOL><INDENT>return method(self, value, locale=context.locale)<EOL><DEDENT>else:<EOL><INDENT>return method(self, value)<EOL><DEDENT><DEDENT><DEDENT>if self.isRecord() and self.__delayed:<EOL><INDENT>self.__delayed = False<EOL>self.read()<EOL><DEDENT>with WriteLocker(self.__dataLock):<EOL><INDENT>orig, curr = self.__values.get(col.name(), (None, None))<EOL>value = col.store(value, context)<EOL>if col.testFlag(col.Flags.I18n) and isinstance(curr, dict) and isinstance(value, dict):<EOL><INDENT>new_value = curr.copy()<EOL>new_value.update(value)<EOL>value = new_value<EOL><DEDENT>try:<EOL><INDENT>change = curr != value<EOL><DEDENT>except TypeError:<EOL><INDENT>change = True<EOL><DEDENT>if change:<EOL><INDENT>self.__values[col.name()] = (orig, value)<EOL><DEDENT><DEDENT>if change:<EOL><INDENT>if col.testFlag(col.Flags.I18n) and context.locale != '<STR_LIT:all>':<EOL><INDENT>old_value = curr.get(context.locale) if isinstance(curr, dict) else curr<EOL>new_value = value.get(context.locale) if isinstance(value, dict) else value<EOL><DEDENT>else:<EOL><INDENT>old_value = curr<EOL>new_value = value<EOL><DEDENT>event = orb.events.ChangeEvent(record=self, column=col, old=old_value, value=new_value)<EOL>if self.processEvent(event):<EOL><INDENT>self.onChange(event)<EOL><DEDENT>if event.preventDefault:<EOL><INDENT>with WriteLocker(self.__dataLock):<EOL><INDENT>orig, _ = self.__values.get(col.name(), (None, None))<EOL>self.__values[col.name()] = (orig, curr)<EOL><DEDENT>return False<EOL><DEDENT>else:<EOL><INDENT>return change<EOL><DEDENT><DEDENT>else:<EOL><INDENT>return False<EOL><DEDENT>
Sets the value for this record at the inputted column
name.  If the columnName provided doesn't exist within
the schema, then the ColumnNotFound error will be
raised.

:param      columnName      | <str>
            value           | <variant>

:return     <bool> changed