我有以下型号:
class Ticket(models.Model):
# ... other fields omitted
active_at = models.DateTimeField()
duration = models.DurationField()
鉴于now = datetime.now()
,我想要检索now
介于active_at
和active_at + duration
之间的所有记录。
我正在使用Django 1.8。以下是DurationField docs。
答案 0 :(得分:3)
如文档中所述,使用DurationField
的算法在PostgreSQL以外的数据库中并不总是按预期工作。我不知道它在哪个范围内工作或在其他数据库中不起作用,因此您必须自己尝试。
如果可行,您可以使用以下查询:
from django.db.models import F
active_tickets = Ticket.objects.filter(active_at__lte=now,
active_at__gt=now-F('duration'))
F
对象引用数据库中的字段,在这种情况下为duration
。