【发布时间】:2016-10-06 05:28:39
【问题描述】:
给定:
from django.conf import settings
from django.db import models
class Membership(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
started = models.DateTimeField()
num_weeks = models.IntegerField()
如何获取所有尚未过期的成员的 QuerySet?
我想写这样的东西……
from datetime import datetime, timedelta
Membership.objects.annotate(
ended=F('started') + datetime.timedelta(weeks=F('weeks'))
).filter(ended__gt=datetime.today())
但我怀疑 F 表达式是否与 timedeltas 兼容,即使它们兼容,timedelta(weeks=) 也与 F 表达式不兼容,因此此代码失败。我猜我需要将 IntegerField 转换为某种类型的数据库级持续时间类型,但我无法在文档中找到有关如何执行此操作的线索。
【问题讨论】:
标签: django django-orm