def get_raw_record(self, instance, update_fields=None):
tmp = {'<STR_LIT>': self.objectID(instance)}<EOL>if update_fields:<EOL><INDENT>if isinstance(update_fields, str):<EOL><INDENT>update_fields = (update_fields,)<EOL><DEDENT>for elt in update_fields:<EOL><INDENT>key = self.__translate_fields.get(elt, None)<EOL>if key:<EOL><INDENT>tmp[key] = self.__named_fields[key](instance)<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>for key, value in self.__named_fields.items():<EOL><INDENT>tmp[key] = value(instance)<EOL><DEDENT>if self.geo_field:<EOL><INDENT>loc = self.geo_field(instance)<EOL>if isinstance(loc, tuple):<EOL><INDENT>tmp['<STR_LIT>'] = {'<STR_LIT>': loc[<NUM_LIT:0>], '<STR_LIT>': loc[<NUM_LIT:1>]}<EOL><DEDENT>elif isinstance(loc, dict):<EOL><INDENT>self._validate_geolocation(loc)<EOL>tmp['<STR_LIT>'] = loc<EOL><DEDENT>elif isinstance(loc, list):<EOL><INDENT>[self._validate_geolocation(geo) for geo in loc]<EOL>tmp['<STR_LIT>'] = loc<EOL><DEDENT><DEDENT>if self.tags:<EOL><INDENT>if callable(self.tags):<EOL><INDENT>tmp['<STR_LIT>'] = self.tags(instance)<EOL><DEDENT>if not isinstance(tmp['<STR_LIT>'], list):<EOL><INDENT>tmp['<STR_LIT>'] = list(tmp['<STR_LIT>'])<EOL><DEDENT><DEDENT><DEDENT>logger.debug('<STR_LIT>', tmp['<STR_LIT>'], self.model)<EOL>return tmp<EOL>
Gets the raw record.

If `update_fields` is set, the raw record will be build with only
the objectID and the given fields. Also, `_geoloc` and `_tags` will
not be included.