Django model update(修改) 修改時間並沒有觸發的問題
阿新 • • 發佈:2018-12-19
我們都知道 django 裡面模型設計 一般會有常用的兩個欄位 建立時間 和 修改時間,這兩個欄位的定義是這樣的:
created = models.DateTimeField(auto_now_add=True, verbose_name="新增時間") updated = models.DateTimeField(auto_now=True, verbose_name="更新時間")
一般來說,你對這個表的資料有修改的時候,修改時間會隨之變動,但是我遇到一個情況,是即使你修改了這條資料的內容,但是修改時間並沒有變動。
問題解決:
修改更新有兩種方法
1)save
修改模型類物件的屬性,然後執行save()方法
hero = HeroInfo.objects.get(hname='豬八戒')
hero.hname = '豬悟能'
hero.save()
2)update
使用模型類.objects.filter().update(),會返回受影響的行數
HeroInfo.objects.filter(hname='沙悟淨').update(hname='沙僧')
第一種修改更新的方法是會觸發updated = models.DateTimeField(auto_now=True, verbose_name="更新時間")欄位的更新時間的,第二種不會觸發。
所以如果你更新的資料沒有觸發更新時間,檢查是否用了第二種方法,換成第一種修改的方式就可以了。