我有一对多的关系模型,这是我的模型的摘要:
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()
I首先clear
数据,然后append
新数据。但我认为这不是最佳做法,因为我的表上仍然有旧记录,它只是删除了相关的ForeignKey id,但在相关列上仍然有其他记录。
所以,如何以正确的方式来做..?
我通过执行以下操作找出了这一点: