【发布时间】:2012-03-06 00:46:38
【问题描述】:
我对 SQLAlchemy(使用 Flask SqlAlchemy)对象定义了这个:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True)
password = db.Column(db.String(30))
email = db.Column(db.String(45), unique=True)
friends = db.relationship('Friend', backref='user',
lazy='dynamic')
def __init__(self, username, password, email):
self.username = username
self.password = password
self.email = email
def __repr__(self):
return "<User('%s','%s','%s')>" % (self.username, self.email, self.id)
class Friend(db.Model):
id = db.Column(db.Integer, primary_key=True)
userId = db.Column(db.Integer, db.ForeignKey('user.id'))
friendId = db.Column(db.Integer)
created = db.Column(db.DateTime)
def __init__(self, userId, friendId):
self.userId = userId
self.friendId = friendId
self.created = datetime.datetime.now()
def __repr__(self):
return "<Friend(%i,%i)>" % (self.userId, self.friendId)
据我所知,要添加一个朋友,我应该可以这样做:
首先获取用户:
MyUser = bpdata.User.query.filter_by(id=1).first()
结交朋友:
MyFriend = bpdata.User.query.filter_by(id=2).first()
现在我想做:
MyUser.Friends.Append(MyFriend)
这可能吗,还是我只需将朋友 ID 直接添加到表 Friend 中?
【问题讨论】:
-
我认为您正在创建错误的关系。一个用户有很多朋友,同一个朋友可以成为多个用户的朋友,所以你必须使用 M2M 而不是 O2M。
标签: python sqlalchemy