1

我有以下模型:

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 文档

4

1 回答 1

3

如文档中所述,带 a 的算术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

于 2015-03-15T00:08:24.237 回答