我想基于一个模型的两个字段进行查询,一个日期,被一个int偏移,用作timedeltamodel.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我发现一些消息来源是什么在Django的新版本更换为DateModifierNode并进行查询使用F()和timedelta在Django的,但他们是没有帮助的。有些人建议使用工期字段,但是我希望拼命地以天为单位输入间隔,每当我使用工期字段时,管理员都需要以[days hh:mm:ss]的形式在管理员表格中输入间隔。有些提供了一种方法model.objects.filter(last_date__gte=datetime.now()-timedelta(days=1)*F('interval'))在db.sqlite3中不起作用并返回错误。请给我建议一些解决方案,例如使用持续时间字段并仅输入天数的管理员,或者使用天数的整数字段的解决方案。
1 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
我以这种方式处理了这种情况:
class Line(models.Model):
last_date = models.DateTimeField(auto_now=True)
interval1 = models.IntegerField(default=0)
interval2 = models.DurationField(default=0)
def save(self, *args, **kwargs):
self.interval2 = timedelta(days=self.interval1)
super(Line, self).save(*args, **kwargs)
我使用了两个字段,并在将表单中的interval1(整数字段)转换为interval2(DurationField)并排除了表单中的interval2的同时,可以轻松应用Filter。
model.objects.filter(last_date__gte=datetime.now()- F('interval2'))
添加回答
举报
0/150
提交
取消