[英]Unable to delete parent record in one to many relationship - Flask-SqlAlchemy
I've created to 3 simple model with flask-sqlalchemy with one to many relationship. 我创建了3个简单的模型与flask-sqlalchemy有一对多的关系。 Here is the code for models:
这是模型的代码:
class UsersModel(BaseModel, UserMixin):
__tablename__ = 'user'
email = db.Column(db.String(255), unique=True)
password = db.Column(db.String(255))
confirmed_at = db.Column(db.DateTime())
info = db.relationship('UserInfoModel', backref="user", cascade="all, delete" , lazy='dynamic')
notes = db.relationship('NotesModel', backref="owner", cascade="all, delete" , lazy='dynamic')
class UserInfoModel(db.Model):
__tablename__ = 'user_info'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
first_name = db.Column(db.String(55))
last_name = db.Column(db.String(55))
age = db.Column(db.Integer)
profession = db.Column(db.String(255))
class NotesModel(BaseModel):
__tablename__ = 'notes'
title = db.Column(db.String(255), nullable=False)
desc = db.Column(db.Text)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
I can insert and retrive relational data without any problem but when I'm trying to delete a user it should also delete notes & info rather it gives error and don't let me delete. 我可以毫无问题地插入和检索关系数据,但是当我试图删除用户时,它也应该删除注释和信息,而不是它给出错误,不要让我删除。 Here is the error that I see: http://prntscr.com/ek5cx1
这是我看到的错误: http : //prntscr.com/ek5cx1
But if I delete notes & info and then try to delete user it works. 但如果我删除笔记和信息,然后尝试删除用户,它的工作原理。 It's doing the reverse.
它正在做相反的事情。 I tried using 'delete-orphan' but didn't worked.
我尝试使用'delete-orphan'但没有奏效。 I have read the documentation and read some blog about it but nothing helps.
我已阅读文档并阅读了一些关于它的博客,但没有任何帮助。 Am I wrong about declaring the relation?
我对宣布这种关系是错误的吗? If so please help me to implement this or help me to find error within my code.
如果是这样,请帮助我实现这一点或帮助我在我的代码中找到错误。
Appriciate your help, Thanks 感谢您的帮助,谢谢
Update: After adding delete-orphan I can delete data from session but not form phpmyadmin. 更新:添加delete-orphan后,我可以从会话中删除数据,但不能从phpmyadmin中删除。
i think you want your relationships defined opposite how you have them, so like this: 我想你希望你的关系定义与你拥有它们的方式相反,所以你喜欢这样:
class UsersModel(BaseModel, UserMixin):
__tablename__ = 'user'
email = db.Column(db.String(255), unique=True)
password = db.Column(db.String(255))
confirmed_at = db.Column(db.DateTime())
class UserInfoModel(db.Model):
__tablename__ = 'user_info'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
first_name = db.Column(db.String(55))
last_name = db.Column(db.String(55))
age = db.Column(db.Integer)
profession = db.Column(db.String(255))
user = db.relationship('User',uselist=False, cascade='all, delete-orphan',backref=db.backref('info', uselist=False))
class NotesModel(BaseModel):
__tablename__ = 'notes'
title = db.Column(db.String(255), nullable=False)
desc = db.Column(db.Text)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
user = db.relationship('User',uselist=False, cascade='all, delete-orphan',backref=db.backref('notes'.lazy='dynamic'))
用这种方式
cascade="all,delete"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.