Multi-level polymorphism is not supported. See https://bitbucket.org/zzzeek/sqlalchemy/issues/2555/cascading-polymorphic-ons which includes an example of how to get multi-level polymorphic by using a single polymorphic_on value, using COALESCE. On Wed, Nov 7, 2018 at 4:45 AM <ai.research...@gmail.com> wrote: > > Hi all > > I have a phone table in MySQL which has morphology based on its two columns, > "is_deleted" and "is_active" > > If "is_deleted" column is 1, then we don't care about "is_active" column. > If "is_deleted" column is 0, it means that the phone exists and can be either > active or inactive based on "is_active" column > > What I have read, looks like this: > > > > class FullPhone(Base): > __tablename__ = 'phone' > > is_deleted = Column(TINYINT, nullable=False, server_default='0') > > __mapper_args__ = { > 'polymorphic_identity': 1, > 'polymorphic_on': is_deleted > } > > > class ExistingPhone(FullPhone): > is_active = Column(TINYINT, server_default='1') > > __mapper_args__ = { > 'polymorphic_identity': 0, > 'polymorphic_on': is_active > } > > > class ActivePhone(ExistingPhone): > __mapper_args__ = { > 'polymorphic_identity': 1, > } > > > class InactivePhone(ExistingPhone): > __mapper_args__ = { > 'polymorphic_identity': 0, > } > > > > When I run this code, I got a warning: > > Reassigning polymorphic association for identity 0 from <Mapper at > 0x1173f0278 ---> to <Mapper at 0x1173f06d8; --->: Check for duplicate use of > 0 as value for polymorphic_identity. > > > > > It seems that: > > the polymorphic identity '0' of "ExistingPhone" which is a condition on > "is_deleted" column > > is mistaken by: > > the polymorphic identity '0' of "InactivePhone" which is another condition on > "is_active" column > > I appreciate if someone can help me with this structure. Thank you. > > -- > 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 sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > 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 sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.