Как добиться возврата упорядоченного списка при обращении к полю с relationship() в SQLAlchemy ORM?
В SQLAlchemy при создании связи между таблицами можно использовать OrderingList, для которого возможно задать сортировку по определённому полю, но как добиться такого поведения, чтобы сохранялся изначально заданный порядок (как для списков в python>3.6), т.е. чтобы при попытке получения списка связанных элементов через ORM, он был отсортирован в том порядке, в котором в него добавлялись элементы (например, при помощи append(). Пример из документации:
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)
Если использовать связь многие к одному, как в представленном примере, то можно следуя документации использовать для сортировки поле position, заменив его на order и т.п. Но что делать в случае отношения многие-ко-многим, когда порядок будет различаться в зависимости от связанного элемента? Вариант с дублированием элементов при различных значениях в поле order для меня является наиболее простым решением, однако возможно ли подобное реализовать без дублирования?