【发布时间】:2014-06-29 16:05:16
【问题描述】:
我遇到了一个 SqlAlchemy 问题。
我只想删除一个关系。这种关系是由关联对象建立的。
型号
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), unique=True)
username = db.Column(db.String(255), unique=True)
password = db.Column(db.String(255))
following = db.relationship('Follower', foreign_keys='Follower.user_id')
followed_by = db.relationship('Follower', foreign_keys='Follower.follow_user_id')
def __repr__(self):
return '<%s (%i)>' % (self.username, self.id)
class Follower(db.Model):
__tablename__ = 'followers'
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)
follow_user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)
created_at = db.Column(db.DateTime, default=datetime.datetime.now)
user_followed = db.relationship("User", primaryjoin=(follow_user_id==User.id))
user = db.relationship("User", primaryjoin=(user_id==User.id))
def __repr__(self):
return '<%i %i>' % (self.user_id, self.follow_user_id)
我如何添加关系(它有效!):
u1 = # user 1
u2 = # user 2
...
f = Follower()
f.user_followed = u2
u1.following.append(f)
db.session.commit()
我如何尝试删除关系(它不起作用):
f = Follower()
f.user_followed = u2
u1.following.remove(f)
db.session.commit()
错误
ValueError: list.remove(x): x not in list
我明白为什么它不起作用,因为这个 Follower() 实例不在列表 u1.following 中。那么,我怎样才能删除这个关系呢?
【问题讨论】:
标签: python flask sqlalchemy flask-sqlalchemy