【问题标题】:Flask-admin: How to change foreign key and update related recordsFlask-admin:如何更改外键并更新相关记录
【发布时间】:2019-05-22 03:55:49
【问题描述】:

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

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

我尝试了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

非常感谢任何帮助。谢谢

【问题讨论】:

    标签: python flask sqlalchemy foreign-keys flask-admin


    【解决方案1】:

    使用数据库端级联:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多