2013-03-07 95 views
0

我有一個模型對象有兩種方法:expiredpending。過期的經理工作正常,並更新字段。待處理的管理器不起作用。這是我的代碼。Django模型方法不會更新模型字段

附註:我在視圖中將掛起設置爲true。

models.py:

class Job(models.Model): 
    expired=models.BooleanField(default=False) 
    pending=models.BooleanField(default=False) 
    purchased=models.DateTimeField(auto_now_add=True) 
    time=models.PositiveIntegerField(blank=False) 


    def job_expired(self): 
     time=self.time 
     date=self.purchased 
     end=date+timedelta(days=time) 
     #now is defined globally 
     if now > end: 
      ex=self.expired=True 
      #i've tried these two ways below 
      self.pending=False 
      #or 
      ax=self.pending=False 
      ax.save() 
     else: 
      ex=self.expired=False 
     return ex 

讓我再說一遍,它工作正常更新過期的領域,但沒有未決字段。我也嘗試了一種單獨的方法:

 def job pending(self): 
      if self.expired: 
       self.pending=False 

這些選項似乎都不起作用。有人能幫助我嗎?由於

回答

1
def job_expired(self): 
    time=self.time 
    date=self.purchased 
    end=date+timedelta(days=time) 
    #now is defined globally 
    if now > end: 
     self.expired = True 
     self.pending = False 
     self.save() 

     ex = self.expired 
    else: 
     ex=self.expired=False 
    return ex 
+0

謝謝你這樣做了 – 2013-03-08 01:29:47

0

爲了使更改堅守你需要更新模型,然後將其保存:

  1. self.pending = False
  2. self.save()

此外,我想你的意思field而不是manager。關於model managers的更多信息

+0

我的意思是方法,謝謝。但是,如果你看看上面的代碼,我試過self.pending = False,然後self.save()。這仍然不起作用 – 2013-03-08 00:18:41

+0

@cjogbuehi好的,你確定你在正確的事情上調用了.save()嗎?代碼示例看起來不太正確:ax = self.pending = False; ax.save() - 似乎它可能會引發錯誤,應該是self.save()而不是ax.save() – 2013-03-08 01:19:07