日期时间字段之间的差异,以检查其是否多于或少于X分钟

时间:2017-06-27 17:24:42

标签: django

我有票型。我需要列出来自特定节目的门票,这些门票也已经购买或者现在和booked_at之间的时差不到5分钟。

class Ticket(models.Model):
    show = models.ForeignKey(Show)
    seat = models.ForeignKey(Seat)
    user = models.ForeignKey(User)
    booked_at = models.DateTimeField(default=timezone.now)
    bought = models.BooleanField(default=False)



unavailable = Ticket.objects.filter(show=show).filter(Q(bought=True) | Q(booked_at = ????))

如何查询nowbooked_at字段之间的差异,以检查其是否小于/大于X分钟?

2 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

import datetime

booked_at__gt=datetime.datetime.now()-datetime.timedelta(minutes=5)

答案 1 :(得分:2)

__range lookup可用于选择指定范围内的模型实例,包括日期和时间。

将其与datetime.timedelta相结合,你几乎可以写下你需要的所有内容:

from django.utils import timezone
from datetime import timedelta

within_5_minutes = timezone.now() - timedelta(seconds=300)
unavailable = Ticket.objects.filter(
    show=show
).filter(
    Q(bought=True) | Q(booked_at__range=(within_5_minutes, timezone.now())
)