2015-04-28 45 views
1

在Django的1.5,我用下面的代碼將一些數據存儲到我的模型之後被更新:Django的:如何判斷對象是否.save()

new_object, created = MyModel.objects.get_or_create(
    pk = object.id, 
    default = object_dict 
) 

if created: 
    # ... code that creates a log ... 
else: 
    newobject.save() 
    # ... code that creates a log IF the record has been updated 

由於保存()方法返回None,有沒有辦法知道保存是否實際更新,而不比較對象的兩種狀態(保存之前和之後)?

+0

你是什麼意思的「已更新」? – aumo

回答

0

get_or_create方法不會做一個更新到現有的數據庫條目,從而調用newobject.save()會對已經建立的情況下沒有效果,如果你沒有手動設置/改變一些實例屬性。您的get_or_create語法也是錯誤的,請看docs。請注意,它應該是默認值而不是默認值。

new_object, created = MyModel.objects.get_or_create(
    pk=object.id, 
    defaults=object_dict 
) 
0

get_or_create不更新,默認值用於您在初始get查詢中不需要的參數。

根據Django文檔:

defaults = kwargs.pop('defaults', {}) 
params = dict([(k, v) for k, v in kwargs.items() if '__' not in k]) 
params.update(defaults) 
obj = self.model(**params) 
obj.save() 
相關問題