On Thu, Mar 15, 2018 at 4:37 AM, Burak Arslan <[email protected]> wrote: > Hello, > > I want two separate polymorphic identity values to map to the same > class. It's OK when saving only the primary one is used. > > I have something along the lines of the following: > > class Root(TableModel): > some_field = ... > __mapper_args__ = { > 'polymorphic_on': 'some_col', > 'polymorphic_identity': 'root', > > } > > > class Child(Root): > __mapper_args__ = { > 'polymorphic_identity': 'son', > } > > some_new_fields = ... > > mapper(Child, Root.__table__, > polymorphic_identity='daughter', > non_primary=True, > ) > > However, this fails with > > AssertionError: No such polymorphic_identity u'daughter' is defined
"what" exactly fails? just setting up mapper() ? I don't actually understand what this would be meant to achieve. if you simply want to load Child objects for both the "daughter" and "son" identities, polymorphic_on should be made into a case statement, see the example at http://docs.sqlalchemy.org/en/latest/orm/mapping_api.html#sqlalchemy.orm.mapper.params.polymorphic_on : class Employee(Base): __tablename__ = 'employee' id = Column(Integer, primary_key=True) discriminator = Column(String(50)) __mapper_args__ = { "polymorphic_on":case([ (discriminator == "EN", "engineer"), (discriminator == "MA", "manager"), ], else_="employee"), "polymorphic_identity":"employee" } > > For what it's worth, this is sqlalchemy 1.0.17 on python 2 > > Any tips regarding this? Any piece of documentation that I missed? It'd > be nice if we could just do 'polymorphic_identity': ('son', > 'daughter'), or maybe 'polymorphic_secondary_identities': ('daugther', > 'some other gende', ) etc. > > Best regards, > Burak > > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
