我的Dish和Menu对象之间存在这种多对多关系:
class Dish(db.Model):
__tablename__='dish'
id = db.Column(db.Integer, primary_key=True)
dish_name = db.Column(db.String(50)) # name given by user
created = db.Column(db.DateTime, default=func.now())
user_id = db.Column(db.Integer, db.ForeignKey('users.id')) # new
menu_id = db.Column(db.Integer, db.ForeignKey('menu.id'))
menu = db.relationship('Menu',
back_populates='dishes',
uselist=False)
和:
class Menu(db.Model):
__tablename__='menu'
id = db.Column(db.Integer, primary_key=True)
created = db.Column(db.DateTime, default=func.now(), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
dishes = db.relationship('Dish',
back_populates='menu',
uselist=True)
另外,我有用户:
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
menu = db.relationship("Menu",
backref=db.backref('user'),
uselist=True)
我知道我可以从Dish表中删除“ dish”,就像这样:
dish = 'pasta'
db.session.query(Dish).filter(Dish.dish_name==dish).delete()
但是我需要删除此项目,将其从“菜单”中删除,并确保仅从该特定用户中删除表,并通过以下方式进行查询:
user = User.query.filter_by(id=user_id).first().
问题
如何从“菜”,“菜单”中删除“菜”并通过user.id过滤(加入?)?