Внешние ключи, отношения между моделями в sqlalchemy колбе - PullRequest
0 голосов
/ 16 октября 2019

У меня есть эти две модели:

class User(db.Model, UserMixin):
    __tablename__ = 'users'
    __table_args__ = (
        PrimaryKeyConstraint('id',),
    )

    id       = db.Column(db.Integer, primarky_key=True)
    username = db.Column(db.String, unique=True, nullable=False)
    email    = db.Column(db.String, unique=True, nullable=False)
    password = db.Column(db.String, nullable=False)


class Review(db.Model):
    __tablename__ = 'reviews'
    __table_args__ = (
        PrimaryKeyConstraint('id', ),
    )
    id        = db.Column(db.Integer, primary_key=True)
    content   = db.Column(db.Text, nullable=False)

Я хотел создать связь между этими двумя таблицами, чтобы, когда пользователь пишет рецензию, он переходил к модели рецензирования и имел отношение к * 1004. * в модели «Пользователи». Я перепробовал много ответов, но они возвращают различные виды ошибок, я запутался, кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Вы можете использовать db.relationship, чтобы создать отношения «один ко многим» между пользователями и отзывами.

class User(db.Model, UserMixin):
    __tablename__ = 'users'
    __table_args__ = (
        PrimaryKeyConstraint('id',),
    )

    id       = db.Column(db.Integer, primarky_key=True)
    username = db.Column(db.String, unique=True, nullable=False)
    email    = db.Column(db.String, unique=True, nullable=False)
    password = db.Column(db.String, nullable=False)
    reviews = db.relationship('Review', backref='user', cascade='all, delete, delete-orphan')


class Review(db.Model):
    __tablename__ = 'reviews'
    __table_args__ = (
        PrimaryKeyConstraint('id', ),
    )
    id        = db.Column(db.Integer, primary_key=True)
    content   = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)

Это позволит использовать user.reviews и review.user

0 голосов
/ 16 октября 2019

Попробуйте:

user_id = db.Column(db.Integer, db.ForeignKey('user.id')) user = db.relationship(User, backref='user_reviews', lazy=True)

И прочитайте документацию .

...