SqlAlchemy многие ко многим со средним столом - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь построить отношение «многие ко многим» в SQLAlchemy в своем приложении для колб, это мои модели, которые у меня пока есть.

from backend import db

 association_table = db.Table('association', db.metadata,
    db.Column('left_id', db.Integer, db.ForeignKey('left.id')),
    db.Column('right_id', db.Integer, db.ForeignKey('right.id'))
)

class Trainer(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(40), unique=True, nullable=False)
    first_name = db.Column(db.String(30), nullable=False)
    last_name = db.Column(db.String(30), nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default="default.jpg")
    password = db.Column(db.String(20), nullable=False)
    certifications = db.relationship('Certification', secondary="association_table", lazy='subquery',
                                     backref=db.backref('certifications', lazy=True))
    def __repr__(self):
        return f"{self.first_name} {self.last_name} - {self.email}"


class Certification(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, unique=True, nullable=False)
    score = db.Column(db.Integer, default=0)
    verified = db.Column(db.Boolean, default=False),
    trainers = db.relationship("Trainer",
                               secondary="association_table",
                               back_populates="certification")

Я получаю эту ошибку всякий раз, когда пытаюсь получить создание нового экземпляра тренера

sqlalchemy.exc.InvalidRequestError: When initializing mapper mapped class Trainer->trainer, expression 'association_table' failed to locate a name ("name 'association_table' is not defined"). If this is a class name, consider adding this relationship() to the <class 'backend.models.trainer.Trainer'> class after both dependent classes have been defined.

Как я могу заставить эти отношения работать, это правильный выбор для использованиятаблица ассоциаций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...