【发布时间】:2018-12-16 13:27:15
【问题描述】:
我想根据模型的两个字段进行查询,一个日期,一个整数偏移量,用作时间增量
model.objects.filter(last_date__gte=datetime.now()-timedelta(days=F('interval')))
我的模型是这样的:
class Line(models.Model):
last_date = models.DateTimeField(auto_now=True)
interval = models.IntegerField(default=0)
我正在使用 Django 2.0 和 db.sqlite3
我找到了一些来源 What is the replacement for DateModifierNode in new versions of Django 和 Making queries using F() and timedelta at django,但它们没有帮助。
有些人建议使用持续时间字段,但我希望以天为单位输入间隔,每当我使用持续时间字段时,管理员需要在管理表单中的 [days hh:mm:ss] 中输入。
还有人给出了方法
model.objects.filter(last_date__gte=datetime.now()-timedelta(days=1)*F('interval'))
在 db.sqlite3 中不起作用并返回错误。
请建议我一些解决方案,例如管理员使用持续时间字段并仅输入天数或某些带有天数整数字段的解决方案。
【问题讨论】:
-
interval是什么类型?请发布您模型的相关部分。 -
整数类型
-
@SiddanathamSaikalyan 也许最好为
interval使用DurationField,然后为管理视图注册一个自定义form,它只允许输入天数。跨度>