Skip to content

1.14.5 — create-path type coercion

Choose a tag to compare

@vsdudakov vsdudakov released this 16 Jul 07:15
· 14 commits to main since this release

Correctness fix release. Highlights:

Fixed

  • Create paths return canonical Python types: create(), get_or_create(), update_or_create(), bulk_create() and their QuerySet variants previously kept loose input (a string for a decimal or UUID column) as a raw str on the returned instance, while get() yielded Decimal/UUID. DecimalField, UUIDField, BooleanField (semantic string handling — bool("false") would be True), TimeDeltaField, IntEnumField and CharEnumField now normalise on assignment, so create(balance="12.34").balance is a Decimal and matches a fetched row.
  • update_from_dict (the update_or_create update path) applies the same coercion.
  • JSONField is deliberately unchanged (a string is a valid JSON value); int/float/char fields stay identity to keep the plain construction fast path.

Full details in CHANGELOG.md.