1. 程式人生 > >Django model update(修改) 修改時間並沒有觸發的問題

Django model update(修改) 修改時間並沒有觸發的問題

我們都知道 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="更新時間")欄位的更新時間的,第二種不會觸發。

所以如果你更新的資料沒有觸發更新時間,檢查是否用了第二種方法,換成第一種修改的方式就可以了。