我目前正在使用 Flask 开发一个应用程序,并且在删除一对一关系中的项目时遇到了一个大问题。我的模型中有以下结构:
class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.String(8), primary_key = True)
password = db.Column(db.String(26))
class Student(db.Model):
__tablename__ = 'student'
user_id = Column(db.String(8), ForeignKey('user.user_id'), primary_key = True)
user = db.relationship('User')
class Professor(db.Model):
__tablename__ = 'professor'
user_id = Column(db.String(8), ForeignKey('user.user_id'), primary_key = True)
user = db.relationship('User')
如果我删除用户,我想要做的是删除学生或教授。我尝试使用下面的代码对其进行测试,但是,当我检查数据库时,学生和教授仍然在那里,而我的测试没有通过。我尝试在设置关系时包含级联参数,但它不起作用。我在网上找到了使用这个参数的方法:single_parent=真,但它也不起作用。
user1 = User(user_id='user1234',password='alsdjwe1')
user2 = User(user_id='user2345',password='asfr5421')
student1 = Student(user = user1)
professor1 = Professor(user = user2)
db.session.delete(user1)
db.session.delete(user2)
如果有人能帮助我解决这个问题,我会很高兴。
非常感谢,
Thiago.
Use the cascade
你们关系中的争论。
class Student(db.Model):
__tablename__ = 'student'
user_id = Column(db.String(8), ForeignKey('user.user_id'), primary_key = True)
user = db.relationship('User', cascade='delete')
class Professor(db.Model):
__tablename__ = 'professor'
user_id = Column(db.String(8), ForeignKey('user.user_id'), primary_key = True)
user = db.relationship('User', cascade='delete')
您可能想了解一下删除孤儿 http://docs.sqlalchemy.org/en/rel_0_9/orm/session.html#delete-orphan如果您的用例需要它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)