From 4baaf5a813c2d9ab58787c57aac10ac52e55b9c1 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 23 Jun 2023 10:45:12 -0400 Subject: [PATCH] add explicit warning re: mapped_column.default Change-Id: I3ac7133323a02cb70e20de2fd96cc31842ead4f1 References: #9936 References: #10009 --- lib/sqlalchemy/orm/_orm_constructors.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/sqlalchemy/orm/_orm_constructors.py b/lib/sqlalchemy/orm/_orm_constructors.py index fab93f6824..b5586350d0 100644 --- a/lib/sqlalchemy/orm/_orm_constructors.py +++ b/lib/sqlalchemy/orm/_orm_constructors.py @@ -246,6 +246,15 @@ def mapped_column( :class:`_sql.Insert` construct would use in any case, leading to the same end result. + .. note:: When using Core level column defaults that are callables to + be interpreted by the underlying :class:`_schema.Column` in conjunction + with :ref:`ORM-mapped dataclasses + `, especially those that are + :ref:`context-aware default functions `, + **the** :paramref:`_orm.mapped_column.insert_default` **parameter must + be used instead**. This is necessary to disambiguate the callable from + being interpreted as a dataclass level default. + :param insert_default: Passed directly to the :paramref:`_schema.Column.default` parameter; will supersede the value of :paramref:`_orm.mapped_column.default` when present, however -- 2.47.2