2011-02-07 23 views
11

Veritabanımdaki bir kaydı silmek için bir işlev yapmaya çalışıyorum ve SQLAlchemy uzantısı. Sorun, sadece bir satırı silmek yerine, hepsini siler. Birisi benim kodumda neyin yanlış olduğunu söyleyebilir mi?Flask-SQLAlchemy ile satırı silme

@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) 

Şimdiden teşekkürler!

cevap

24

Bu çizginin sizin düşündüğünüz gibi olmadığından şüpheleniyorum.

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

Sen (zaten daha önce yaptığımız) tek bir örneğini alıyoruz ve query kullanarak aslında filtreleme ve bu nedenle hepsini silmeden tüm nesneler üzerinde yeni bir sorgu sorunu. aslında bir hata (ben zaten denedim) `AttributeError sahip olduğunu, Annoyingly

db.session.delete(page) 
+0

:

Muhtemelen ne yapmak istediğiniz budur 'Sayfa' nesne hiçbir özelliği vardır ' –

+0

@tominated I delete'' Bunu şimdi kendim denedim ve cevabımı bir çözümle güncelledim. –

+0

evet, bu düzeltildi! Teşekkürler! –

İlgili konular