def __iter__(self):
if self.isRecord() and self.__delayed:<EOL><INDENT>self.__delayed = False<EOL>self.read()<EOL><DEDENT>context = self.context()<EOL>def _allowed(columns=None, context=None):<EOL><INDENT>return not columns[<NUM_LIT:0>].testFlag(columns[<NUM_LIT:0>].Flags.Private)<EOL><DEDENT>auth = self.__auth__ if callable(self.__auth__) else _allowed<EOL>expand_tree = context.expandtree(self.__class__)<EOL>schema = self.schema()<EOL>if context.columns:<EOL><INDENT>columns = [schema.column(x) for x in context.columns]<EOL><DEDENT>else:<EOL><INDENT>columns = schema.columns(flags=~orb.Column.Flags.RequiresExpand).values()<EOL><DEDENT>for column in columns:<EOL><INDENT>if (not column or<EOL>column.testFlag(column.Flags.Private) or<EOL>column.testFlag(column.Flags.RequiresExpand) or<EOL>not auth(columns=(column,), context=context)):<EOL><INDENT>continue<EOL><DEDENT>elif ((column.testFlag(column.Flags.Virtual) and not isinstance(self, orb.View)) or<EOL>column.gettermethod() is not None):<EOL><INDENT>yield column.field(), self.get(column, inflated=False)<EOL><DEDENT>else:<EOL><INDENT>try:<EOL><INDENT>value = self.__values[column.name()][<NUM_LIT:1>]<EOL><DEDENT>except KeyError:<EOL><INDENT>pass<EOL><DEDENT>else:<EOL><INDENT>if column.testFlag(orb.Column.Flags.I18n) and type(value) == dict:<EOL><INDENT>value = value.get(context.locale)<EOL><DEDENT>if isinstance(column, orb.ReferenceColumn):<EOL><INDENT>if isinstance(value, orb.Model):<EOL><INDENT>yield column.field(), value.id()<EOL><DEDENT>else:<EOL><INDENT>yield column.field(), value<EOL><DEDENT>try:<EOL><INDENT>subtree = expand_tree.pop(column.name())<EOL><DEDENT>except KeyError:<EOL><INDENT>pass<EOL><DEDENT>else:<EOL><INDENT>reference = self.get(column,<EOL>expand=subtree,<EOL>returning=context.returning,<EOL>scope=context.scope)<EOL>output = reference.__json__() if reference is not None else None<EOL>yield column.name(), output<EOL><DEDENT><DEDENT>else:<EOL><INDENT>yield column.field(), column.restore(value, context=context)<EOL><DEDENT><DEDENT><DEDENT><DEDENT>if expand_tree:<EOL><INDENT>for key, subtree in expand_tree.items():<EOL><INDENT>try:<EOL><INDENT>value = self.get(<EOL>key,<EOL>expand=subtree,<EOL>returning=context.returning,<EOL>scope=context.scope<EOL>)<EOL><DEDENT>except orb.errors.ColumnNotFound:<EOL><INDENT>continue<EOL><DEDENT>else:<EOL><INDENT>if hasattr(value, '<STR_LIT>'):<EOL><INDENT>yield key, value.__json__()<EOL><DEDENT>else:<EOL><INDENT>yield key, value<EOL><DEDENT><DEDENT><DEDENT><DEDENT>
Iterates this object for its values.  This will return the field names from the
database rather than the API names.  If you want the API names, you should use
the recordValues method.

:sa         recordValues

:return     <iter>