def METHOD_NAME(self, core_columns_only=False):
    _dict = OrderedDict()
    cols = self.get_columns()
    if not core_columns_only:
        cols = ['id'] + cols + ['position']
    for col in cols:
        value = getattr(self, col)
        if isinstance(value, datetime.datetime):
            value = value.isoformat()
        _dict[col] = value
    for k, v in self.extras.items() if self.extras else []:
        _dict[k] = v
    if self.package_id and not core_columns_only:
        _dict["package_id"] = self.package_id
    return _dict