【问题标题】:Object wont update对象不会更新
【发布时间】:2011-01-14 08:48:04
【问题描述】:

嘿,当我调用 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()

【问题讨论】:

    标签: django model methods save


    【解决方案1】:

    现在,您的代码似乎不会进入“if”块(除非 id 为 None),因此没有调用超类的“save”方法。

    【讨论】:

      【解决方案2】:

      您的代码中有错误。它仅在对象还没有 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
      

      【讨论】:

      • +1 但检查文档以明确覆盖保存: def save(self, *args, **kwargs): super(Car, self).save(*args, **kwargs) 从docs:传递可以传递给模型方法的参数也很重要——这就是 *args, **kwargs 位所做的。 docs.djangoproject.com/en/dev/topics/db/models/…
      猜你喜欢
      • 2011-02-13
      • 2021-07-06
      • 2021-08-31
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      相关资源
      最近更新 更多