
flask sqlalchemy 的一对多关系怎么添加数据?
举例:
主-用户,唯一
class UserInfo(db.Model): __tablename__ = 'user_info' id = db.Column(db.Integer, primary_key=True) u_id = db.Column(db.String(80), unique=True) u_account = db.relationship('Account', backref='user_info', lazy='dynamic') 用户账户信息,多个系统,一个用户存多个账户
class Account(db.Model): __tablename__ = 'account' id = db.Column(db.Integer, primary_key=True) a_info_id = db.Column(db.Integer, db.ForeignKey('user_info.id')) a_type = db.Column(db.Integer) # 各系统编号 a_account = db.Column(db.String(256)) a_password = db.Column(db.String(256)) 然后代码里怎么添加用户的账户信息,假设用户已存在:
current_user = UserInfo.query.filter_by(u_id=id).first() 为 current_user 添加账户信息:
new_account = Account( a_type=1, a_account=username, a_password=password, ) 请问怎么添加 new_account 能使得此账户信息属于 current_user ?
我尝试过:
new_account.user_info.append(current_user) db.session.add(new_account) db.session.commit() 但是错了,这应该是多对多的添加方式,一对多该怎么写呢?
1 Jolly23 OP 问题已经解决了,由于 Account.a_info_id 的外键是 UserInfo.id ,所以直接给 new_account 加上 new_account = Account( a_type=1, a_account=username, a_password=password, a_info_id=current_user.id ) 然后执行 db.session.add(new_account) db.session.commit() 就好了 不太清楚这样解决问题是否最优,如果有更好的办法,也请大家提出交流,感谢 V2EX |