Odstranění řádek s Flask-SQLAlchemy

hlasů
11

Snažím se, aby funkci odstranit záznam v mé databázi s baňky a rozšíření pro SQLAlchemy. Problém je, že namísto smazání pouze jeden řádek, to odstraní všechny z nich. Může mi někdo říct, co je s mým kódem špatně?

@app.route('/admin/delete/<int:page_id>', methods=['GET','POST'])
@requires_auth
def delete_page(page_id):
    page = Page.query.get(page_id)
    if not page:
        abort(404)
    if page.children:
        flash('You can not delete a page with child pages. Delete them, or assign them a different parent.',
              'error')
        return redirect(url_for('admin_page'))
    if request.method == 'POST':
        Page.query.get(page_id).query.delete()
        db.session.commit()
        flash('Page was deleted successfully', 'success')
        return redirect(url_for('admin_page'))
    return render_template('admin_delete.html', page_title=page.title, page_id=page_id)

Díky předem!

Položena 07/02/2011 v 12:58
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
24

Domnívám se, že tato linka není to, co si myslíte.

    Page.query.get(page_id).query.delete()

Začínáš jednu instanci (což už udělal dříve) a za použití queryskutečně vydat nový dotaz nad všemi objekty bez filtrace a tudíž vymazání všech z nich.

Pravděpodobně to, co chcete udělat, je toto:

    db.session.delete(page)
Odpovězeno 07/02/2011 v 13:53
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more