首页 > 解决方案 > DateField 过期后 Django 更改 BooleanField 值

问题描述

我希望能够在 end_suspension_date 经过(因此如果它存在)时自动将暂停设置为 False(当然,如果是 True)。

模型.py

class Profile(models.Model):
    suspended = models.BooleanField(default=False)
    start_suspension_date =  models.DateField(null=True, blank=True)
    end_suspension_date =  models.DateField(null=True, blank=True)
    # ... other fields

没有第三方应用程序有没有办法做到这一点?我想在模型中定义一个函数(但我认为这样做没有多大意义):

def end_suspension(self):
     if date.today() >= self.end_suspension_date:
          self.suspended = False 
          start_suspension_date = None
          end_suspension_date = None
      else:
          # do nothing...

标签: djangopython-3.6

解决方案


你可以试试,比如:

class Profile(models.Model):
    start_suspension_date =  models.DateField(null=True, blank=True)
    end_suspension_date =  models.DateField(null=True, blank=True)
    # ... other fields

    @property
    def suspended(self):
        return date.today() < self.end_suspension_date

推荐阅读