如何在 SQL 中建立'many-to-many'关系炼金术



我希望在usersproducts之间建立'多对多'关系。为此,我product_user准备了另一张桌子,但效果不佳。我不能在中学relationship使用它.

错误:

名称错误: 名称"product_users"未定义

这是代码:

## Product model
class Product(db.Model):
__tablename__ = 'products'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
users = db.relationship("User", secondary=product_users, backref="users", lazy="dynamic")   
def __repr__(self):
return '<Product %r>' % self.uid
## User model
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
products = db.relationship("Product", secondary=product_users, backref="products", lazy="dynamic")   
def __repr__(self):
return '<User %r>' % self.uid
## Product User model
class ProductUser(db.Model):
__tablename__ = 'product_users'
id = db.Column(db.Integer, primary_key=True)
product_id = db.Column(db.Integer,db.ForeignKey('products.id'))
user_id = db.Column(db.Integer,db.ForeignKey('users.id'))
product = db.relationship("Product", backref='products', foreign_keys=[product_id])
user = db.relationship("User", backref='users', foreign_keys=[user_id])
def __repr__(self):
return '<ProductUser %r>'

对不起,我有错别字table name.

从:

users = db.relationship("User", secondary=product_users, backref="users", lazy="dynamic")   
products = db.relationship("Product", secondary=product_users, backref="products", lazy="dynamic") 

自:

users = db.relationship("User", secondary='product_users', backref="users", lazy="dynamic")   
products = db.relationship("Product", secondary='product_users', backref="products", lazy="dynamic") 

最新更新