¿Hay alguna forma de obtener los registros previos/siguientes de una consulta SqlAlchemy? De este modo:SqlAlchemy prev/next accesors?
record.id
record.next.id
record.prev.id
podría añadir los siguientes métodos/PREV para cada modelo, pero me estoy preguntando si ya hay alguna manera automágicas que pasé por alto. La aplicación web en cuestión está escrita en Pilones.
Editar: Esto es probablemente un truco sucio, pero funciona. Me importa el objeto Session sqlalchemy en mi modelo y lo hizo:
def next(self):
return Session.query(Blog).filter(Blog.id > self.id).order_by(Blog.id).first()
def prev(self):
return Session.query(Blog).filter(Blog.id < self.id).order_by(desc(Blog.id)).first()
Sin cambiar el modelo (al agregar realmente la relación a las tablas), su solución es bastante buena. Lo único que cambiaría es 'Session.query (...' a 'Session.object_session (self) .query (...' (ver http://www.sqlalchemy.org/docs/orm/session). html # sqlalchemy.orm.session.Session.object_session) – van
Para ser claros, Session.query está utilizando la clase de sesión global que se define en su propio proyecto y Session.object_session está utilizando la clase de sesión que viene con sqlalchemy. –