【问题标题】:Changing Boolean value after specific time在特定时间后更改布尔值
【发布时间】:2021-10-27 01:06:15
【问题描述】:

我正在构建一个 BlogApp,我试图在 10 分钟后将 Boolean Field 设置为 False,因此在 models.py 中创建了一个 function 以更改早于 10 分钟的布尔值。

models.py 中的功能不起作用,10 分钟后它没有改变布尔值。

import datetime
from django.utils import timezone
from datetime import timedelta

class Post(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=30,default='')
    body = models.CharField(max_length=30,default='')
    date_added = models.DateTimeField(auto_now_add=True)
    is_old = models.BooleanField(default=False)


#Function to change Boolean Value to False after 10 minutes
    def active(self):
        now = timezone.now()
        if date_added < timezone.now() - timedelta(minutes=10):
            is_bountied = False
            self.save()

我没有在视图中使用任何东西。

我尝试了什么?

我关注了THIS 问题的答案并创建了一个celery task,但它不起作用,没有显示任何错误。

比我试过的:-

@property
def active(self):
    return self.date_added >timezone.now() - timedelta(minutes=10)

def __init__(self):
    super().__init__()
    self.active = self.end_date > datetime.datetime.utcnow()

但它也没有更新该字段

它仍然没有更改或保存该字段。

任何帮助将不胜感激。提前谢谢你。

【问题讨论】:

    标签: python django django-models django-queryset


    【解决方案1】:
    • 如果您想检查帖子是否早 10 分钟,您可以在模型中维护一个字段 created_at
    • 在获取documents 时,您可以搜索created_at &gt;= current_time + 10 minutes)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多