[英]How can i check if model field was changed in post_save?
如果模型字段之一已更新,我必須在post_save中做一些額外的邏輯,但無法檢查它是否已更新。
試圖覆蓋這樣的init方法
def __init__(self, *args, **kwargs):
super(Profile, self).__init__(*args, **kwargs)
self.__old_city = self.city
並在post_save檢查
if instance.city != instance.__old_city:
#extra logic
但有一個例外
AttributeError:“配置文件”對象沒有屬性“ __old_city”
我在做什么錯(除了使用信號:D)?
那是因為您正在使用名稱修改功能。
雙下划線(名稱改寫)
從Python文檔中:
形式為__spam的任何標識符(至少兩個前導下划線,至多一個下划線)在文本上被_classname__spam替換,其中classname是當前的類名,其中前導下划線被去除。 進行這種修飾時無需考慮標識符的語法位置,因此可以用於定義類私有實例和類變量,方法,全局變量中存儲的變量,甚至實例中存儲的變量。 在其他類的實例上對此類私有。
這意味着要訪問instance.__old_city
您需要使用_className__attribute_name
因此__old_city
將被破壞->
_Profile__old_city
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.