2013-03-07 4 views
0

У меня есть модельный объект двумя способами: expired и pending. Истекший менеджер отлично работает и обновляет поле. Ожидающий менеджер не работает. Вот мой код.Метод модели 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

Спасибо, что это сделало работу –

0

Для того, чтобы изменения придерживайтесь вам необходимо обновить модель, а затем сохранить его:

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

Кроме того, я думаю, что вы имеете в виду field вместо manager. Больше информации на

+0

Я на самом деле имел в виду метод, спасибо. Но если вы посмотрите на приведенный выше код, я попробовал self.pending = False, затем self.save(). Это все еще не работает –

+0

@cjogbuehi okay вы уверены, что вызвали .save() правильно? Пример кода выглядит не совсем правильно: ax = self.pending = False; ax.save() - похоже, что это, вероятно, вызовет ошибку и должно быть self.save() вместо ax.save() –

Смежные вопросы