Tengo los siguientes modelos:
class User(db.Model): ... #One user can have many roles, many roles can be on many users roles = db.relationship('Role', secondary='users_roles', backref=db.backref('users', lazy='dynamic') class Role(db.Model): id = .. name = .. class Notification(db.Model): ... user_id = db.Column(db.Integer, db.ForeignKey('users.id')) #a notification can be shown for several roles shows_for = db.relationship('Role', secondary='notifications_roles', backref=db.backref('user_notifications', lazy='dynamic'))Y estoy tratando de crear una consulta para obtener todas las notificaciones de un usuario, dadas sus funciones:
def get_notifications(): #Get the current user's roles: usr_roles = db.session.query(User).filter_by(id=current_user.id).first().roles #Get notifications to show for that user relevant_notifications = (Notification.query.filter( Notification.shows_for_roles.in_(usr_roles)).all() Ahora, esto no funciona ( NotImplementedError: in_() not yet supported for relationships. For a simple many-to-one, use in_() against the set of foreign key values.
¿Cómo haría para obtener los objetos que tienen uno o más roles vinculados a ellos que también están en mi objeto Usuario?