DateTimeField should return a datetime instance
You are probably using sqlite and storing the datetimes in some unrecognizable format. If you look at the code you can see what format are supported out of the box. Using these formats is recommended because they allow for lexicographic ordering.

This is also explained in detail in the documentation:

http://docs.peewee-orm.com/en/latest/peewee/api.html#DateTimeField @coleifer Thanks for the quick response. This is how I'm setting the value:
```
In [2]: from models import Entry
In [3]: entry = Entry()
In [4]: from datetime import datetime, timezone
In [5]: entry.created_at = datetime.now(timezone.utc)
In [6]: entry.save()
Out[6]: 1
In [7]: entry.id
Out[7]: 3
In [8]: entry = Entry.get(id=3)
In [9]: entry.created_at
Out[9]: '2020-12-27 20:33:38.411859+00:00'
```

I'm setting it directly as a `datetime` object and `save()` works, but isn't it inconsistent to allow receiving a `datetime` and returning a `str` later? I'm using SQLite, yes.
Peewee converts `datetime` to a string when saving to SQLite, why not convert it back as well? Don't store tz info. Just use naive datetimes in utc. That worked, thanks.
There should be an error thrown when trying to save with tzinfo saying it's not supported.
`DateTimeField` should return a `datetime` instance when accessed instead of a `str` instance. I imagine one of the main reasons to use a `DateTimeField` instead of `CharField` is to work with the field as a `datetime` instance without worrying about converting to/from `str`.

Model:
```
class Entry(Model):
    created_at = DateTimeField(default=datetime.now(timezone.utc))
```

Expected behavior:
```
entry = Entry.get()
print(type(t.created_at))
<class 'datetime.datetime'>
```

Actual behavior:
```
entry = Entry.get()
print(type(t.created_at))
<class 'str'>
```