Flask-admin:如何更改外键和更新相关记录

Flask-admin: How to change foreign key and update related records

我有两个 table 具有外键关系,我正在使用 flask-admin 作为管理 GUI。

在某些情况下我需要修改外键。在这种情况下,相关 table 的所有现有记录都应更新(使用新的外键)。您将如何实现此功能?

我尝试了 flask-admin 的 on_model_change 功能。尽管我 运行 陷入了这个问题,但我只从函数 (?) -> 中获取更新的密钥(我需要旧密钥来找到现有的评估记录并更新它们)。此外,除非评估记录已更新(不满足外键约束),否则我无法提交新密钥。

我可以在 flask-admin GUI 中实现这个功能吗?

class Assessment(db.Model):
__tablename__ = "assesment_table"
id = db.Column(db.Integer, primary_key=True)
psr_id = db.Column(db.String(40), db.ForeignKey("psr_object_table.psr_id"))

class Unit(db.Model):
__tablename__ = "units_table"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
psr_id = db.Column(db.String(40), unique=True)


#needed for Flask-Admin view 
class UnitView(ModelView):
    def on_model_change(self, form, model, is_created):
        #get old_key
        #query and update db with new foreign key
        #commit everything

非常感谢任何帮助。谢谢

使用数据库端级联:

class Assessment(db.Model):
    ...
    psr_id = db.Column(db.String(40), db.ForeignKey("psr_object_table.psr_id",
                                                    onupdate="CASCADE"))