2010-02-08 59 views
1

乾草,我的目標似乎沒有當我調用save()方法對象不會更新

繼承人我的代碼

car = Car.objects.get(pk=car_id) 
    car.views += 1 
    car.save() 

和模型

views = models.FloatField(max_length=1000) 

我有更新save()重寫方法,這可能會導致問題嗎?

def save(self): 
    d = timedelta(days=self.expires_in) 
    if not self.id: 
     self.expires_on = datetime.now() + d 
     super(Car, self).save() 

回答

5

您在代碼中出現錯誤。只有在對象還沒有id的情況下,它纔會調用超類save方法。固定代碼:

def save(self): 
    d = timedelta(days=self.expires_in) 
    if not self.id: 
     self.expires_on = datetime.now() + d 
    super(Car, self).save() # <-- here 
+0

+1,但檢查文檔的保存覆蓋專門: 高清保存(個體經營,* ARGS,** kwargs): 超(汽車,個體經營).save(* ARGS,** kwargs) 從文檔: 重要的是,您可以傳遞可以傳遞給模型方法的參數 - 這就是* args,** kwargs位所做的。 http://docs.djangoproject.com/en/dev/topics/db/models/#overriding-model-methods – DrBloodmoney 2010-02-08 21:31:32

1

眼下,好像你的代碼不會進入的「如果」塊(除非該ID都沒有),所以超類的「拯救」的方法是沒有得到調用。