Flask-SQLAlchemy更新一对多记录

我有一对多的关系模型,这是我的模型的摘录:

class ScheduleDayAndTime(db.Model):
    __tablename__ = 'schedule_day_and_time'
    id = db.Column(db.Integer, primary_key=True)
    day = db.Column(db.Enum(DayNameList, name='day'))
    start_at = db.Column(db.Time())
    end_at = db.Column(db.Time())
    requisition_schedule_id = db.Column(db.Integer, db.ForeignKey('requisition_schedule.id'), nullable=True)



class RequisitionSchedule(db.Model):
    __tablename__ = 'requisition_schedule'
    id = db.Column(db.Integer, primary_key=True)
    schedule_day_and_time = db.relationship('ScheduleDayAndTime', backref='requisition_schedule', lazy=True)
    # ...
    # ...

如何更新多表中的数据..?

现在尝试这样:

requisition_schedule = RequisitionSchedule.query.filter_by(id=requisition_schedule_id).first()

requisition_schedule.schedule_day_and_time.clear()
db.session.commit()

schedule_day_and_time_1 = ScheduleDayAndTime(
    day=form.schedule_day.data,
    start_at=form.start_at.data,
    end_at=form.end_at.data,
)

schedule_day_and_time_2 = ScheduleDayAndTime(
    day=form.schedule_day_2.data,
    start_at=form.start_at_2.data,
    end_at=form.end_at_2.data,
)

requisition_schedule.schedule_day_and_time.append(schedule_day_and_time_1)
requisition_schedule.schedule_day_and_time.append(schedule_day_and_time_2)
db.session.commit()

clear先是数据,然后append是新数据。但是我认为这不是最佳实践,因为我的表上仍然有旧记录,它只是删除了相关的ForeignKey id,但在相关列上仍然有其他记录。

那么,如何以正确的方式来做呢?

我通过执行以下操作来解决此问题:

首先,我删除当前记录:

ScheduleDayAndTime.query.filter(ScheduleDayAndTime.requisition_schedule_id==requisition_schedule_id).delete()
db.session.commit()

然后像上面的问题一样附加:

schedule_day_and_time_1 = ScheduleDayAndTime(
    day=form.schedule_day.data,
    start_at=form.start_at.data,
    end_at=form.end_at.data,
)

schedule_day_and_time_2 = ScheduleDayAndTime(
    day=form.schedule_day_2.data,
    start_at=form.start_at_2.data,
    end_at=form.end_at_2.data,
)

requisition_schedule.schedule_day_and_time.append(schedule_day_and_time_1)
requisition_schedule.schedule_day_and_time.append(schedule_day_and_time_2)
db.session.commit()

不知道这是否是最佳做法,但我认为这比上述问题的解决方案要好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Flask sqlalchemy中订购一对多模型?

来自分类Dev

Flask-SQLAlchemy:更新一对多关系

来自分类Dev

Flask-Flask-Admin-一对多-级联

来自分类Dev

一对多,Flask-SqlAlchemy,sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)关系不存在

来自分类Dev

Flask + SQLAlchemy中一对一的设置关系

来自分类Dev

flask sqlalchemy一对一关系问题

来自分类Dev

Flask / SQLAlchemy-一对一关系语法

来自分类Dev

SQLAlchemy + Flask多对一关系

来自分类Dev

Jsonify Flask-SQLAlchemy Flask中的多对一关系

来自分类Dev

围绕 Flask SqlAlchemy 查询简化一对 if-else 语句

来自分类Dev

Flask-SQLAlchemy多对多

来自分类Dev

SQLAlchemy一对多,添加一条记录

来自分类Dev

Jsonify flask-sqlalchemy烧瓶中的多对一关系

来自分类Dev

Flask-SQLAlchemy 中的一对一关系仅以一种方式工作

来自分类Dev

Flask-SQLAlchemy查询多对多

来自分类Dev

使用Flask-SQLAlchemy选择多对多

来自分类Dev

Flask SQLAlchemy多对多删除元素

来自分类Dev

Flask-SQLAlchemy多对多插入

来自分类Dev

如何在Flask SQL Alchemy中查询一对多/多对多关系?

来自分类Dev

在Flask,SqlAlchemy中获得一对一关系的“ insert_id”

来自分类Dev

flask-sqlalchemy,一对多关系,外键变为NULL

来自分类Dev

Flask SQLAlchemy无法创建记录(DateTimeField)

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

Flask-Admin在一对多计数字段上排序

来自分类Dev

Flask SQL Alchemy 多连接路径和一对多关系

来自分类Dev

SQLAlchemy一对多(多对多)关系

来自分类Dev

Flask-SQLAlchemy 更新记录方法对数据库不起作用

来自分类Dev

插入一对多记录

Related 相关文章

热门标签

归档