Hello all,
In regards to
ordering_list:
http://docs.sqlalchemy.org/en/rel_0_9/orm/extensions/orderinglist.html
from sqlalchemy.ext.orderinglist import ordering_list
Base = declarative_base()
class Slide(Base):
__tablename__ = 'slide'
id = Column(Integer, primary_key=True)
name = Column(String)
bullets = relationship("Bullet", order_by="Bullet.position",
collection_class=ordering_list('position'))
class Bullet(Base):
__tablename__ = 'bullet'
id = Column(Integer, primary_key=True)
slide_id = Column(Integer, ForeignKey('slide.id'))
position = Column(Integer)
text = Column(String)
If we added a `backref` to 'bullets' relationship (i.e. `slide`) so the
following were possible:
slide = Slide(...)
assert len(slide.bullets) == 0
session.add(slide)
bullet0 = Bullet(...)
session.add(bullet0)
bullet0.slide = slide
session.commit()
assert len(slide.bullets) == 1
print bullet0.position # <<<<< position is None ???
bullet1 = Bullet(...)
session.add(bullet1)
slide.bullets.append(bullet1)
session.commit()
assert len(slide.bullets) == 2
assert bullet0.position = 0 # <<<<< position is correct now
assert bullet1.position = 1
Should `bullet.position` receive a value `0` since it's the 1st one added
even when the relationship assignment happens from the MANYTOONE side?
It seems like `bullet` position remains `None` until items are added to the
`bullets` collection.
Although I have not test it using `test/ext/test_orderinglist.py`, the
depicted "position=None" behavior occurs in our own model.
Thoughts?
Thanks in advance
--
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.