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"))
我有两个 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"))