Flask-SQLAlchemy: el modelo no tiene atributo ‘foreign_keys’

Tengo 3 modelos creados con Flask-SQLalchemy: User, Role, UserRole

usuario.py:

class Role( ActiveRecord, db.Model ): __tablename__ = "roles" # Schema id = db.Column( db.Integer, primary_key = True ) name = db.Column( db.String( 24 ), unique = True ) description = db.Column( db.String( 90 ) ) users = db.relationship( "User", secondary = "UserRole", \ backref = db.backref( "roles" ) ) 

role.py:

 class User( db.Model, ActiveRecord ): __tablename__ = "users" # Schema id = db.Column( db.Integer, primary_key = True ) email = db.Column( db.String( 90 ), unique = True ) password = db.Column( db.String( 64 ) ) # Relations roles = db.relationship( "Role", secondary = "UserRole", \ backref = db.backref( "users" ) ) 

user_role.py:

 class UserRole( ActiveRecord, db.Model ): __tablename__ = "user_roles" # Schema user_id = db.Column( db.Integer, db.ForeignKey( 'users.id' ), primary_key = True ) role_id = db.Column( db.Integer, db.ForeignKey( 'roles.id' ), primary_key = True ) 

Si bash (en la consola) obtener todos los usuarios a través de User.query.all() , obtengo AttributeError: 'NoneType' object has no attribute 'all' y si vuelvo a intentarlo AttributeError: 'NoneType' object has no attribute 'all' otro error que dice:

 sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Original exception was: type object 'UserRole' has no attribute 'foreign_keys' 

¿Alguien puede arrojar una luz sobre qué es exactamente lo que estoy haciendo mal? Creo que tuve este código funcionando bien hace unos meses, pero actualicé SQLAlchemy, Flask and Flask-SQLAlchemy recientemente y se detuvo. Es solo un proyecto paralelo.

es un poco difícil aquí porque está utilizando algunas clases base desconocidas como “ActiveRecord” y similares. Sin embargo, se parece bastante a que el argumento “secundario” es incorrecto:

 class User( db.Model, ActiveRecord ): __tablename__ = "users" # Schema id = db.Column( db.Integer, primary_key = True ) email = db.Column( db.String( 90 ), unique = True ) password = db.Column( db.String( 64 ) ) # Relations roles = db.relationship( "Role", secondary = "UserRole", \ backref = db.backref( "users" ) ) 

secondary deben referirse a un objeto de Table , no a una clase asignada, si por nombre de cadena sería "user_roles" :

  roles = db.relationship( "Role", secondary = "user_roles", \ backref = db.backref( "users" ) )