2013-03-03 89 views
0

我已經更改了保存方法以包含修改日期字段以在所有保存中進行更改。我想知道是否使用update()方法更新模型。保存方法會被調用嗎?Django自定義保存方法

請回答,如果不解釋比我怎麼能對所有的修改

回答

2

如果read the documentation on the update method of a queryset你會發現它更新修改日期字段說以下內容:

最後,實現更新()不在SQL級別更新,因此不會在模型上調用任何save()方法,也不會發出pre_save或post_save信號(這是調用Model.save()的結果)。

如果您想更新一堆記錄,有一個自定義的保存()方法的模型,環比他們並調用保存(),像這樣:

for e in Entry.objects.filter(pub_date__year=2010): 
    e.comments_on = False 
    # Or in your case, update the date here 
    e.save() 
+0

對!此外,請記住存在[auto_now_add](https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.DateField.auto_now_add),還有[model util MonitorField]( https://github.com/carljm/django-model-utils#monitorfield)。兩種方法都可以避免覆蓋保存方法。 – danihp 2013-03-03 15:57:08