2016-10-04 3 views

答えて

3

を設定する必要がある。この

class Foo(models.Model): 
     bet = models.IntegerField() 
     end_date = models.DateTimeField() \\some date in the future 
     is_canceled = models.BooleanField(default=False) 

ようなモデルを持っていますcronから定期的に実行してフィールド値を変更する

now = datetime.now() 
Foo.objects.filter(end_date__lte=now).update(is_canceled=True) 

しかし、そのフィールドを動的にする方が良いです

class Foo(models.Model): 
    bet = models.IntegerField() 
    end_date = models.DateTimeField() \\some date in the future 

    @property 
    def is_canceled(self): 
     if self.end_date <= datetime.now(): 
      return True 
     else: 
      return False 

some_foo = Foo.objects.first() 
if some_foo.is_canceled: 
    ...