Hi Mike,

Thanks for the quick reply. I added the "concrete=True" to the B class 
definition and got this error:

AttributeError: Concrete Mapper|B|b does not implement attribute 'type' at 
> the instance level.  Add this property explicitly to Mapper|B|b.


Although is a subclass of A (as defined above), the "type" relationship 
appears lost. OK, I'll add it back to the B definition:

type_pk = Column("type_pk", Integer, ForeignKey(Type.pk))

type = relationship(Type, primaryjoin=Type.pk==type_pk)

I used the same label for "backref" initially and got a "property of that 
name exists" error. I them omitted the backref as above.

This works exactly as I'd hoped! I create a B object, it's inserted into 
the database as expected (visible in the A and B tables). When I perform a 
query to retrieve all A objects, the correct number is returned and some of 
them are correctly typed B. The defined relationships work. I tried 
creating a "backref" with a unique name, and that worked, but I found that 
wasn't necessary if I'm happy using the same name. When going from the type 
mapped to A, I get a list of A objects (excluding B); when going from the 
type of B, I get the list of just the B objects.

Is there a way to set the type_pk discriminator in the B class as a default 
so I don't have to set it every time?

Thanks!

Demitri



-- 
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.

Reply via email to