SQLAlchemy - удалить элемент в отношениях «многие ко многим» - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть отношение многие ко многим между объектами Di sh и 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)

Я знаю, что могу удалить 'di sh' из таблицы Di sh следующим образом:

dish = 'pasta'
db.session.query(Dish).filter(Dish.dish_name==dish).delete()

Но мне нужно удалить этот элемент, удалить его из Меню и убедитесь, что таблицы удалены только от этого конкретного пользователя, запросив:

user = User.query.filter_by(id=user_id).first().

ВОПРОС

Как удалить 'di sh' из Di sh, Меню и отфильтровать (присоединиться?) их по user.id?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...