Sorry, still a few mistakes in what I wrote (first testing what you paste is a far better way to work) :
121 from sqlalchemy.orm import deferred 122 from sqlalchemy import Text 123 124 class Base(DBBASE): 125 __tablename__ = 'base' 126 __mapper_args__ = {'polymorphic_identity': 'base', 'polymorphic_on':'type_'} 127 id = Column(Integer, primary_key=True) 128 name = Column(String(255)) 129 description = deferred( 130 Column(Text()), 131 group="full" 132 ) 133 type_ = Column( String(30), nullable=False) 134 135 class Element(Base): 136 __tablename__ = 'element' 137 __mapper_args__ = {'polymorphic_identity': 'element'} 138 id = Column(ForeignKey("base.id"), primary_key=True) 139 comments = deferred( Column(Text()), group="full", ) print(DbSession().query(Element).options(undefer_group('full'))) SELECT element.comments AS element_comments, element.id AS element_id, base.id AS base_id, base.name AS base_name, base.type_ AS base_type_ FROM base INNER JOIN element ON base.id = element.id Le 16/03/2015 17:33, tonthon a écrit : > Sorry I was a bit too speed when writing that one :) > > So I've got a Base model : > """ > class Base(DBBASE): > __tablename__ = > 'base' > __mapper_args__ = {'polymorphic_identity': 'base', 'polymorphic_on': > 'type_'} > id = Column(Integer, primary_key=True) > name = Column(String(255)) > description = deferred( > Column(Text()), > group="full" > ) > type_ = Column( String(30), nullable=False) > """ > > and a child model > """ > class Element(DBBASE): > __tablename__ = 'element' > __mapper_args__ = {'polymorphic_identity': 'element'} > id = Column(ForeignKey("base.id")) > comments = deferred( Column(Text()), group="full", ) > """ > > The following query : > """ > Element.query().options(undefer_group('full')).all() > """ > > doesn't load the description column, is that the expected behaviour ? > > Regards > > > Le 16/03/2015 17:21, Michael Bayer a écrit : >> tonthon <tontho...@gmail.com> wrote: >> >>> Hi, >>> >>> I'm using polymorphism and I set up some deferred columns at each level >>> of inheritance belonging to the same deferred group : >>> >>> """ >>> class Base(DBBASE): >>> id = Column(Integer, primary_key=True) >>> name = Column(String(255)) >>> description = deferred( >>> Column(Text()), >>> group="full" >>> ) >>> >>> class Element(DBBASE): >>> id = Column(ForeignKey("base.id")) >>> comments = deferred( >>> Column(Text()), >>> group="full", >>> ) >>> """ >>> >>> The following query : >>> >>> """ >>> Element.query().options(undefer_group('full')).all() >>> """ >>> >>> doesn't defer the description column, is that the expected behaviour ? >> a query for Element here will not load objects of type “Base”, so I don’t >> see where “description” comes into play. >> >> If you can provide a more complete example that would help. >> >> -- 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 http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.