SQLAlchemy:从多对多表中删除单个条目

时间:2018-01-15 11:39:57

标签: python sqlalchemy

我可能正在思考这个问题(或者解开这个问题),但我对如何从SQLAlchemy中的多对多表中删除单行感到困惑。文档花了很多时间讨论级联删除,这里的例子通常也与搜索事物或做多行有关。

但我想从关联表中删除行。

这是我的设置。对于餐馆应用程序,我正在为客人绘制晚餐。我没有在“晚餐”或“客人”表格中显示所有行。

在models.py中:

guest_dinner = db.Table('guest_dinner',
                        db.Column('guest_id', db.Integer, db.ForeignKey('guest.id')),
                        db.Column('dinner_id', db.Integer, db.ForeignKey('dinner.id')))

class Dinner(db.Model):
    __tablename__='dinner'
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.Date)

    guests = db.relationship('Guest',
                             secondary=guest_dinner,
                             back_populates='dinners')

class Guest(db.Model):
    __tablename__='guest'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(256))

    dinners = db.relationship('Dinner',
                              secondary=guest_dinner,
                              back_populates='guests')

然后在我的view.py中:

# dinner_id and guest_id are passed as parameters
dinner = Dinner.query.get(dinner_id)
guest = Guest.query.get(guest_id)
if dinner == None or guest == None:
    flash('Record does not exist')
    return redirect(url_for('index'))

# WHAT GOES HERE? to delete from association table only

就是这样。我不想删除晚餐或客人。我想删除一个客人参加特定晚宴的事实,即仅在guest_dinner中记录。

0 个答案:

没有答案