Uno a muchos matraz | SQLAlchemy

Estoy tratando de crear una relación de uno a muchos usando Flask y SQLAlchemy.

Quiero que la relación uno a muchos sea así:

“Para cualquier película individual, puede haber múltiples personajes”

Aquí es lo que tengo hasta ahora, pero está guardando en mi base de datos como uno a uno en este momento. (Una película a un personaje, guardando varias veces en DB para múltiples personajes)

class Movie(db.Model): __tablename__ = "movies" id = db.Column('movies_id', db.Integer, primary_key=True) movie_type = db.Column('movie_type', db.Text()) def __init__(self, movie_type): self.movie_type = movie_type def __repr__(self): return '' % self.id class Character(db.Model): __tablename__ = "characters" id = db.Column('character_id', db.Integer, primary_key=True) character_description = db.Column('character_description', db.Text()) movie_id = db.Column(db.Integer, db.ForeignKey('movies.movie_id')) movie = db.relationship('Movie', backref='characters', lazy='dynamic') def __init__(self, character_description, movie): self.character_description = character_description self.movie = movie def __repr__(self): return '' % self.id 

Estoy guardando en el DB así:

     movie = models.movie(movie_type) character = models.Character(character_description, movie) db.session.add(movie) db.session.add(character) db.session.commit() 

    El objective final es poder ver en qué película está el personaje. Si también pudieras ayudarme con esa consulta, ¡eso sería genial!

    Gracias de antemano.

    Bueno, creo que extrañas las relaciones de los personajes en la película + el inserto no fue del todo correcto.

    También hay pequeños detalles que hay que tener cuidado. ¿Por qué id de la película es movieS_id e id del carácter es character_id?

    Además, el nombre de la columna es el mismo que el nombre de la variable, si no se especifica.

    Por ejemplo puedes hacer eso:

     character_description = db.Column(db.Text()) 

    De todos modos, sin cambiar estos detalles, puedes probar esto:

     class Movie(db.Model): __tablename__ = "movies" id = db.Column('movies_id', db.Integer, primary_key=True) movie_type = db.Column('movie_type', db.Text()) characters = db.relationship("Character", backref="movie", lazy='dynamic') def __init__(self, movie_type): self.movie_type = movie_type def __repr__(self): return '' % self.id class Character(db.Model): __tablename__ = "characters" id = db.Column('character_id', db.Integer, primary_key=True) character_description = db.Column('character_description', db.Text()) movie_id = db.Column(db.Integer, db.ForeignKey('movies.movies_id')) movie = db.relationship('Movie') def __init__(self, character_description, movie): self.character_description = character_description self.movie = movie def __repr__(self): return '' % self.id 

    Insertando

     c = Character(character_description='c') c2 = Character(character_description='c2') m = Movie(movie_type ='action') # link characters to movie m.characters.append(c) m.characters.append(c2) # or m.characters.extend([c,c2]) db.session.add(m) # add characters db.session.add(c) db.session.add(c2) # or db.session.add_all([c,c2]) # commit db.session.commit()