Nitpicking but shouldn't we change the method signature to (default=None, **kwargs).

Because the meaning of "in the `defaults` `dict` in `kwargs`" is not immediately obvious.

This applies to `get_or_create()` as well.