91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django中的模型信號是什么

發布時間:2020-08-26 16:03:11 來源:億速云 閱讀:137 作者:Leah 欄目:編程語言

Django中的模型信號是什么?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

模型信號

django.db.models.signals模塊定義了模型系統發送的一組信號。

pre_init

django.db.models.signals.pre_init

每當您實例化Django模型時,該信號都會在模型的__init__()方法的開頭發送。

帶有此信號的參數:

sender:剛創建了一個實例的模型類。

ARGS:傳遞給__init__()的位置參數列表:

kwargs:傳遞給__init__()的關鍵字參數的字典:

例如:

from app01 import models
p = models.Publisher(name='沙河出版社')

發送到pre_init處理程序的參數將是:

Django中的模型信號是什么pre_save

django.db.models.signals.pre_save

這是在模型的save()方法的開頭發送的。

帶有此信號的參數:

sender:模型類。

instance:正在保存的實際實例。

raw:一個布爾值True如果模型按照顯示的方式保存(即當加載固定裝置時)。不應該查詢/修改數據庫中的其他記錄,因為數據庫可能尚未處于一致狀態。

using:正在使用的數據庫別名。

update_fields:如果有字段被傳遞給Model.save()方法那么就是所傳遞的字段集,否則就是None。

post_save

django.db.models.signals.post_save

像pre_save一樣,但是在save()方法的末尾發送。

帶有此信號的參數:

sender:模型類。

instance:正在保存的實際實例。

created:一個布爾值True如果創建了新記錄。

raw:一個布爾值True如果模型按照顯示的方式保存(即當加載固定裝置時)。 不應該查詢/修改數據庫中的其他記錄,因為數據庫可能尚未處于一致狀態。

using:正在使用的數據庫別名。

update_fields:如果有字段被傳遞給Model.save()方法那么就是所傳遞的字段集,否則就是None。

pre_delete

django.db.models.signals.pre_delete

在模型的delete()方法和queryset的delete()方法的開頭發送。

帶有此信號的參數:

sender:模型類。

instance:正在刪除的實際實例。

using:正在使用的數據庫別名。

post_delete

django.db.models.signals.post_delete

像pre_delete一樣,但是在模型的delete()方法和queryset的delete()方法的末尾發送。

帶有此信號的參數:

sender:模型類。

instance:正在刪除的實際實例。

請注意,該對象將不再位于數據庫中,所以要非常小心使用此實例。

using:正在使用的數據庫別名。

m2m_changed

django.db.models.signals.m2m_changed

在模型實例上更改了ManyToManyField時發送。 嚴格來說,這不是一個模型信號,因為它是由ManyToManyField發送的,但由于它補充了pre_save / post_save和pre_delete / post_delete當跟蹤模型的更改時,它包括在這里。

帶有此信號的參數:

sender:描述ManyToManyField的中間模型類。 當定義多對多字段時,此類自動創建;您可以使用多對多字段上的through屬性訪問它。

instance:多對多關系更新的實例。 這可以是sender或ManyToManyField相關的類的一個實例。

action:指示在關系上完成的更新類型的字符串。 這可以是以下之一:

“pre_add”:在之前發送一個或多個對象被添加到關系中。

“post_add”:在之后發送一個或多個對象被添加到關系中。

“pre_remove”:在之前發送一個或多個對象從關系中刪除。

“post_remove”:在之后發送一個或多個對象從關系中刪除。

“pre_clear”:在之前發送關系被清除。

“post_clear”:之后發送關系被清除。

reverse:指示關系的哪一側被更新(即,如果它是正在被修改的正向或反向關系)。

model:添加到,從關系中刪除或從關系中清除的對象的類。

pk_set:對于pre_add,post_add,pre_remove和post_remove操作,這是一組主鍵值加入或從關系中刪除。

對于pre_clear和post_clear操作,這是None。

using:正在使用的數據庫別名。

class_prepared

django.db.models.signals.class_prepared

每當模型類“準備”時發送 - 即,一旦模型已經被定義并在Django的模型系統中注冊。 Django內部使用這個信號;它通常不會用于第三方應用程序。

由于此信號是在應用程序注冊表群集進程期間發送的,并且在應用注冊表完全填充后運行AppConfig.ready(),因此無法使用該方法連接接收器。 一種可能性是連接他們AppConfig.__init__(),注意不要導入模型或觸發對應用程序注冊表的調用。

使用此信號發送的參數:

sender:ready的model類。

看完上述內容,你們掌握Django中的模型信號是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴林右旗| 哈巴河县| 海兴县| 霍林郭勒市| 离岛区| 招远市| 孝义市| 泰来县| 西平县| 漯河市| 大新县| 瑞昌市| 濮阳县| 曲沃县| 专栏| 巴塘县| 固阳县| 时尚| 吉林市| 沙河市| 德阳市| 万载县| 恭城| 诸暨市| 财经| 淅川县| 大渡口区| 鹰潭市| 衡东县| 曲靖市| 凌海市| 盐亭县| 济源市| 奈曼旗| 喀什市| 南雄市| 凉城县| 自治县| 乾安县| 宁河县| 铜陵市|