python - 如何从发布时间过滤特定小时的帖子
问题描述
我正在尝试在特定时间显示我的帖子,这是我的 models.py
class Booking(models.Model):
check_in = models.DateTimeField(default=timezone.now)
check_out = models.DateTimeField(blank=True,null=True)
我想在结账后显示对象 12 小时,例如,如果我们有一个对象,它的结账时间是 2021 年 10 月 14 日上午 10 点,然后显示该帖子直到晚上 10 点!
我试过了,但没有用Booking.objects.filter(check_out__hour=12)
请问有可能吗?先感谢您
解决方案
您可以使用以下方式过滤:
from datetime import timedelta
from django.db.models.functions import Now
Booking.objects.filter(
check_out__gte=Now()-timedelta(hours=12)
)
您可以进一步过滤,以便使用查找 [Django-doc]check_out
过滤掉任何晚于现在的对象:__range
from datetime import timedelta
from django.db.models.functions import Now
Booking.objects.filter(
check_out__range=(Now()-timedelta(hours=12), Now())
)
这Now()
是数据库的时间戳。
我们还可以使用 webserver 机器的时间戳:
from datetime import timedelta
from django.utils.timezone import now
Booking.objects.filter(
check_out__range=(now()-timedelta(hours=12), now())
)
推荐阅读
- swift - 使用 CATransform3D 将矩形图像转换为四边形后如何设置锚点和位置
- python - (Python单元测试)在同一个python文件中为不同的方法不同地修补相同的对象
- javascript - 替换javascript中字符串中的所有字符
- javascript - 如何为 .scroll(function() 设置 PAGE-ID
- python - 使用 plotly 和 xlwings 将 html 添加到 excel 中
- python - 按某些条件读取数据帧值
- tensorflow - 当我使用 keras.layers.MaxPool1d 函数时,出现错误,我该如何解决?
- javascript - 如何即时更改 npm 命令脚本?
- python - 如何从枚举中获取特定字符串?
- git - 知道第三个分支何时合并到 master