我有以下模型:
class Ticket(models.Model):
# ... other fields omitted
active_at = models.DateTimeField()
duration = models.DurationField()
鉴于 now = datetime.now()
,我想检索 now
位于 active_at
和 之间的所有记录>active_at + 持续时间
。
我使用的是 Django 1.8。这是DurationField docs .
最佳答案
如文档中所述,使用 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
。
关于python - 使用 Django,我如何在单个查询中实现此目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29055700/