外键,SQL炼金瓶中模型之间的关系



我有两个模型:

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)

我想在这两个表之间创建关系,以便当用户撰写评论时,它应该转到评论模型,并且它与用户模型中的user_id有关系。我已经尝试了很多答案,但它们返回了不同类型的错误我很困惑,有人可以帮忙吗?

您可以使用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.reviewsreview.user

试试这个:

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

并阅读文档。

最新更新