【问题标题】:casace delete in api flask using Sqlalchaemy使用 Sqlalchemy 在 api 烧瓶中级联删除
【发布时间】:2020-03-25 08:20:03
【问题描述】:
@app.route('/question/<question_id>', methods=['DELETE'])
@token_generator
def delete_question(current_user, question_id):
    """This function is use to delete question by user"""
    question = Questions.query.filter_by(id=question_id,
                                         user_id=current_user.id).first()

    if not question:
        return jsonify({'message': 'No question found!', "status": "404"})

    DB.session.delete(question)
    DB.session.commit()

    return jsonify({'message': 'Question item deleted!, "status": "200"'})

我想删除所有答案@app.route('/question/&lt;question_id&gt;/answers', methods=['DELETE'])

在删除我要删除的问题@app.route('/question/&lt;question_id&gt; 时。

我的答案 api

@app.route('/question/<question_id>/answers', methods=['GET'])
@token_generator
def get_all_answers(current_user, question_id):
    """This function is use to get all answers by user"""
    answers = AnswersDatas.query.filter_by(question_id=question_id,
                                           user_id=current_user.id).all()

    output = []

    for answer in answers:
        data = {'id': answer.id, 'solution': answer.solution, 'solved': answer.complete}
        output.append(data)

    return jsonify({'answers': output})

【问题讨论】:

  • 您正在使用 SQLAlchemy 来管理您的模型,对吧?
  • @MihailFeraru 是的先生

标签: sql api flask sqlalchemy


【解决方案1】:

想要你需要的是名为级联删除。您基本上需要在Questions 模型和AnswerDatas 模型之间建立关系,我认为这是一对多的关系。

它是这样的:

class Questions(Base):
    __tablename__ = 'Questions'

    answers = relationship("AnswerDatas", cascade="all, delete-orphan")

您可以在 SQLAlchemy here 中找到有关此工作原理的更多信息。

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2021-02-17
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2012-12-29
    相关资源
    最近更新 更多