def METHOD_NAME(self, core_columns_only: bool=False) -> dict[str, Any]:
    _dict: dict[str, Any] = 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
    if self.extras:
        for k, v in self.extras.items():
            _dict[k] = v
    if self.package_id and not core_columns_only:
        _dict["package_id"] = self.package_id
    return _dict