gpt4 book ai didi

Django 根据模型本身的时间间隔获取模型对象

转载 作者:行者123 更新时间:2023-12-02 08:53:48 24 4
gpt4 key购买 nike

我正在尝试获取 Django 应用程序中模型的所有过期对象。

模型如下所示:

MyModel(models.Model):
owner = models.ForeignKey(User)
last_check = models.DateTimeField(blank=True, null=True)
interval = models.IntegerField(default=1800)

我需要获取所有匹配的对象,其中last_check早于现在减去检查间隔,以确定是否应该再次检查该对象。

如果我使用静态间隔没有问题:

time_diff = datetime.now() - timedelta(seconds=1800)
MyModel.object.filter(last_check__lte=time_diff)

但是当间隔在模型本身上时,我不知道该怎么做。这是我尝试过的:

objects_to_check = MyModel.objects.filter(
last_check__isnull=False
).filter(
last_check__lte=datetime.now() - timedelta(seconds=F('interval'))
)

但这根本不起作用,只给了我以下错误

unsupported type for timedelta seconds component: F

知道如何解决这个问题吗?

最佳答案

嗯...我不确定您是否可以修改正在查找的字段的值。数据库仍然需要首先检索该值,对其应用函数 timedelta 然后进行比较。

我认为您可能需要重新考虑您的架构......但我可能是错的。也许不存储last_check,而是存储expired属性,您可以直接检查:

MyModel.objects.filter(expired__lte=current_date)

然后在更新模型时:

def save(self):
self.expired = datetime.now() + self.interval;

或者类似的东西。

关于Django 根据模型本身的时间间隔获取模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1734736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com