Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django在DateField过期后更改BooleanField值_Django_Python 3.6 - Fatal编程技术网

Django在DateField过期后更改BooleanField值

Django在DateField过期后更改BooleanField值,django,python-3.6,Django,Python 3.6,我想能够自动设置暂停为假(如果是真的,当然)时,结束_暂停_日期过去(因此,如果它存在) models.py 没有第三方应用程序,有没有办法做到这一点?我曾想过在模型中定义一个函数(但我认为这样做没有多大意义): 你可以试试,比如: class Profile(models.Model): start_suspension_date = models.DateField(null=True, blank=True) end_suspension_date = models.D

我想能够自动设置暂停为假(如果是真的,当然)时,结束_暂停_日期过去(因此,如果它存在)

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

你可以试试,比如:

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
类配置文件(models.Model):
开始日期=models.DateField(null=True,blank=True)
end\u suspension\u date=models.DateField(null=True,blank=True)
# ... 其他领域
@财产
def暂停(自):
返回日期。今天()
你可以试试,比如:

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
类配置文件(models.Model):
开始日期=models.DateField(null=True,blank=True)
end\u suspension\u date=models.DateField(null=True,blank=True)
# ... 其他领域
@财产
def暂停(自):
返回日期。今天()
否,您需要定义一个任务,以筛选暂停结束

我更喜欢的另一种方法是用属性替换
suspended
字段,因为有一个存储“is the user suspended”的字段和一个存储“when is the user Non Stonded”的字段是多余的,因为我们知道当前日期

更惯用的说法是将其称为“已挂起”,因此:

class Profile(models.Model):

    ...

    @property
    def is_suspended(self):
        return date.today() < self.end_suspension_date
类配置文件(models.Model):
...
@财产
def已挂起(自):
返回日期。今天()
然后在登录时查看权限检查等,只需访问
配置文件。已挂起

简单比复杂好:)


阿尔迪,小心时区。经验法则:存储UTC日期而不是本地日期。

不,您需要定义一个任务来过滤暂停结束

我更喜欢的另一种方法是用属性替换
suspended
字段,因为有一个存储“is the user suspended”的字段和一个存储“when is the user Non Stonded”的字段是多余的,因为我们知道当前日期

更惯用的说法是将其称为“已挂起”,因此:

class Profile(models.Model):

    ...

    @property
    def is_suspended(self):
        return date.today() < self.end_suspension_date
类配置文件(models.Model):
...
@财产
def已挂起(自):
返回日期。今天()
然后在登录时查看权限检查等,只需访问
配置文件。已挂起

简单比复杂好:)


阿尔迪,小心时区。经验法则:存储UTC日期而不是本地日期。

副作用是,在我的应用程序中,配置文件不需要登录,因此如果我每次刷新页面时都检查profile.u是否挂起,它将增加大量加载时间(例如,如果我有许多配置文件条目)就数据库读取而言,这两种解决方案之间没有区别:如果使用了布尔字段,您仍然需要点击数据库来检查它是否为真,或者我可以设置一个控件,使调用一天只暂停一次。。。同样感谢UTC的建议,我将检查如何(如果我能做到的话)完成并更新帖子。坦率地说,我认为你想得太多了,正处于过早优化的边缘。从属性开始,并在以后发现性能问题时对其进行优化。专业提示:您不会在这里看到性能问题。将你的时间和精力集中在重要的事情上。副作用是,在我的应用程序中,配置文件不需要登录,因此如果我每次刷新页面时都检查profile.is_挂起,它将增加大量加载时间(例如,如果我有许多配置文件条目)就数据库读取而言,这两种解决方案之间没有区别:如果使用了布尔字段,您仍然需要点击数据库来检查它是否为真,或者我可以设置一个控件,使调用一天只暂停一次。。。同样感谢UTC的建议,我将检查如何(如果我能做到的话)完成并更新帖子。坦率地说,我认为你想得太多了,正处于过早优化的边缘。从属性开始,并在以后发现性能问题时对其进行优化。专业提示:您不会在这里看到性能问题。把你的时间和精力集中在重要的事情上。