需要型号以便用户可以拥有产品,用户可以对其他用户制作的产品进行评论。我在考虑从产品到评论之间存在一对多的关系,但之后用户如何离开哪个评论。这就是我到目前为止所拥有的。
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), unique=True)
products = db.relationship('Product', backref='products',
lazy='dynamic')
class Review(db.Model):
id = db.Column(db.Integer(), primary_key=True)
stars = db.Column(db.String(255))
description = db.Column(db.String(255))
class Product(db.Model):
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
id = db.Column(db.Integer(), primary_key=True)
答案 0 :(得分:1)
您只需将User
和Product
的外键添加到Review
表格中:
class Review(db.Model):
# ...
product_id = db.Column(db.Integer, db.ForeignKey('product.id'))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
您还可以将Reviews
的backref添加到User
和Product
,然后按user.reviews
过滤product_id
。
答案 1 :(得分:0)
我想像这样设置它(包括新的一对多包括 - 我想我已经做到了这一点)。您在Python代码中创建条目时应该知道产品的ID,因此您可以简单地添加它。我认为您不一定需要为此创建关系。
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(255), unique=True)
products = db.relationship('Product', backref='user',
lazy='dynamic')
reviews= db.relationship("Review", backref="user", lazy='dynamic')
class Review(db.Model):
id = db.Column(db.Integer(), primary_key=True)
product_id = db.Column(db.Integer, db.ForeignKey('product.id'))
stars = db.Column(db.String(255))
description = db.Column(db.String(255))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class Product(db.Model):
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
id = db.Column(db.Integer(), primary_key=True)
我在User
课程中更改了一行。你有
products = db.relationship('Product', backref='product',
lazy='dynamic')
但我认为它应该是
products = db.relationship('Product', backref='user',
lazy='dynamic')