python - flask sqlalchemy signals 無法觸發
問題描述
在我得藍圖當中我定義了 一個接受者
# -*- coding: utf-8 -*-from flask_sqlalchemy import models_committed# flag = True# if flag:def on_models_committed(sender, changes): print u’我是訂閱者,我要觸發任務’ for obj, change in changes:if change == ’insert’ and hasattr(obj, ’__commit_insert__’): obj.__commit_insert__()elif change == ’update’ and hasattr(obj, ’__commit_update__’): obj.__commit_update__()elif change == ’delete’ and hasattr(obj, ’__commit_delete__’): obj.__commit_delete__()models_committed.connect(on_models_committed)
然后哦在create_app 當中的__init__.py 導入了我藍圖中的這個方法
在models.py 中定義了__commit_update__()方法來執行處理邏輯
但是現在信號無法觸發,求問哪里出錯了?
問題解答
回答1:問題解決方式db.session.query(ClassModel).filter( ClassModel.id == ids).delete()修改成db.session.query(ClassModel).filter( ClassModel.id == ids).first().delete()classModel(db.Model): .....def delete(self):db.session.delete(self)db.session.commit()
加上以上修改能夠正確的捕捉到信號的觸發了, 但是不知道原理是啥? query對象的刪除,和model對象的刪除的級別問題么, 內置信號是基于db 這一層級別的嗎?
相關文章:
1. 如何解決docker宿主機無法訪問容器中的服務?2. 前端 - CSS3 box-shadow如何設置,或者用什么方法可以產生圖中這樣陰影的效果。3. node.js - vue-cll+sass 樣式不出來 已經npm install sass、 sass-loader了4. html - css 如何讓文字標題顯示在邊框上?5. docker 下面創建的IMAGE 他們的 ID 一樣?這個是怎么回事????6. 在應用配置文件 app.php 中找不到’route_check_cache’配置項7. html按鍵開關如何提交我想需要的值到數據庫8. vim中編輯HTML文件時換行不能縮進9. HTML5中怎么判斷用戶是否正在瀏覽頁面?10. html - 微信端video標簽播放mp4視頻,安卓端提示視頻解析錯誤
