2010-02-08 67 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都没有),所以超类的“拯救”的方法是没有得到调用。