By default the name of the discriminator column used in the
:func:`.polymorphic_union` will be ``type``. This name might clash with
a column in one of your mapped tables. For that reason, the name of
- the discriminator can be configured by setting the ``_concrete_discriminator_name`` attribute.
+ the discriminator can be configured by setting the
+ ``_concrete_discriminator_name`` attribute.
Example::
if m.with_polymorphic:
return
- discriminator_name = _get_immediate_cls_attr(cls, "_concrete_discriminator_name") or "type"
+ discriminator_name = (
+ _get_immediate_cls_attr(cls, "_concrete_discriminator_name")
+ or "type"
+ )
mappers = list(m.self_and_descendants)
pjoin = cls._create_polymorphic_union(mappers, discriminator_name)
if mn is not None:
mappers.append(mn)
- discriminator_name = _get_immediate_cls_attr(cls, "_concrete_discriminator_name") or "type"
+ discriminator_name = (
+ _get_immediate_cls_attr(cls, "_concrete_discriminator_name")
+ or "type"
+ )
pjoin = cls._create_polymorphic_union(mappers, discriminator_name)
# For columns that were declared on the class, these
def mapper_args():
args = m_args()
- args["polymorphic_on"] = pjoin.c[discriminator_name]
+ args["polymorphic_on"] = pjoin.c[discriminator_name]
return args
to_map.mapper_args_fn = mapper_args
"""test #5513"""
class Employee(AbstractConcreteBase, Base):
- _concrete_discriminator_name = (
- "_alternative_concrete_discriminator"
- )
+ _concrete_discriminator_name = "_alt_discriminator"
employee_id = Column(Integer, primary_key=True)
class Manager(Employee):
self.assert_compile(
Session().query(Employee),
"SELECT pjoin.employee_id AS pjoin_employee_id, "
- "pjoin._alternative_concrete_discriminator AS pjoin__alternative_concrete_discriminator "
+ "pjoin._alt_discriminator AS pjoin__alt_discriminator "
"FROM (SELECT engineer.employee_id AS employee_id, "
- "'engineer' AS _alternative_concrete_discriminator "
- "FROM engineer UNION ALL SELECT manager.employee_id AS employee_id, "
- "'manager' AS _alternative_concrete_discriminator "
+ "'engineer' AS _alt_discriminator FROM engineer "
+ "UNION ALL SELECT manager.employee_id AS employee_id, "
+ "'manager' AS _alt_discriminator "
"FROM manager) AS pjoin",
)