Оператор DELETE для таблицы 'subs' должен удалить 1 строку (и);Только 2 были сопоставлены - PullRequest
0 голосов
/ 07 декабря 2018

Я использую Flask-SQLAlchemy со многими отношениями.И я пытаюсь удалить текущего пользователя из пользователей, но я получаю только ошибку, как показано в теме.Что я делаю неправильно, я не мог понять.Заранее благодарим за помощь

Мои модели ниже:

subs = db.Table('subs',
            db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
            db.Column('request_id', db.Integer, db.ForeignKey('request.id'))
            )

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120))
    role = db.Column(db.String(120))
    password_hash = db.Column(db.String(120))
    requests = db.relationship('Request', secondary=subs, backref=db.backref('users', lazy='dynamic'))

class Request(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    org = db.Column(db.String(120))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    cost = db.Column(db.Integer)
    created = db.Column(db.DateTime, default= datetime.utcnow)
    cost_time = db.Column(db.DateTime, default = datetime.utcnow)

Моя форма для удаления:

class Remove(FlaskForm):
    remove = IntegerField('delete request')
    submit = SubmitField('delete')

Мой маршрут:

@app.route('/delete', methods = ['GET', 'POST'])
def delete():
    form = Remove()
    if form.validate_on_submit():
        request = Request.query.get(form.remove.data)
        request.users.remove(current_user)
        db.session.commit()
        return redirect('index')
    return render_template('remove.html', form=form, id=id)
...