我试图在特定时间内展示我的帖子,这是我的模型.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 importNow
Booking.objects.filter(
check_out__gte=Now()-timedelta(hours=12)
)
您可以进一步筛选,以便使用__range
查找[Django-doc]:不会筛选出check_out
晚于现在的对象
from datetime import timedelta
from django.db.models.functions importNow
Booking.objects.filter(
check_out__range=(Now()-timedelta(hours=12), Now())
)
这里Now()
是数据库的时间戳。
我们还可以使用处理Web服务器机器的时间戳
from datetime import timedelta
from django.utils.timezone importnow
Booking.objects.filter(
check_out__range=(now()-timedelta(hours=12), now())
)