如何在Flask Sqlalchemy中更新外键值?

问题描述

class VehicleModel(db.Model):
__tablenam__ = 'vehicle'
id = db.Column(db.Integer,primary_key=True)


class DriverModel(db.Model):
__tablename__ = 'driver'
id = db.Column(db.Integer,primary_key=True)
v_id = db.Column(db.Integer,db.ForeignKey('vehicle.id'))
v_rel = db.relationship('VehicleModel',backref=db.backref('vehicle',uselist=False))


def update(self,id,v_id):
    self.id = id
    self.v_id = v_id
    db.session.commit()

在上面的代码中,我无法更新v_id的值。 sqlalchemy也不抛出任何sql错误。我不知道,更新方法工作正常,但无法更新v_id值。 v_id的值与第一次添加该列时设置的值相同。

解决方法

这是因为Alembic无法对您的dB.Model进行特别详细的检查,您必须自己更改迁移脚本。如果您使用的是Flask-migrate,它将位于“迁移/版本”文件夹中。使用文件其他地方的Alembic语法更改此设置,以更改外键。

,

在关系中进行某些更改后,它会自动运行,所以没关系! 谢谢大家的回应!