Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过ORM向日期添加天数_Python_Django - Fatal编程技术网

Python 通过ORM向日期添加天数

Python 通过ORM向日期添加天数,python,django,Python,Django,如何向数据库中的日期添加天数?我的模型是: class Item(models.Model): days_due = models.IntegerField() issue_date = models.DateTimeField() 我有一个函数,类似于: def is_due(self): time = self.days_due days = timedelta(days=time) due_date = self.issue_date + days

如何向数据库中的日期添加天数?我的模型是:

class Item(models.Model):
    days_due = models.IntegerField()
    issue_date = models.DateTimeField()
我有一个函数,类似于:

def is_due(self):
    time = self.days_due
    days = timedelta(days=time)
    due_date = self.issue_date + days
    if timezone.now() >= due_date:
        return True
    else:
        return False
我希望能够通过数据库查询执行类似于上面的
is_due
功能的操作,这将如何实现?
我参考了文档,没有找到将
F
类与
timedelta
s相结合的方法

不幸的是,F表达式不能这样做:

您可以使用.raw()方法编写自定义sql查询,也可以使用标准筛选器使其正常工作,但前提是所有模型都具有相同的到期日值,这可能不是事实,但为了以防万一,您可以这样做:

Item.objects.filter(issue_date__lte=now - datetime.timedelta(days=days))

我认为你不能用db不可知论的方式来做这件事。我会使用
extra(select)
is\u due
字段添加到查询中。类似(未经测试):

可以在postgres数据库上工作。将
额外选择
放在自定义管理器中,以隔离特定于数据库的代码

Item.objects.extra(select={'is_due': 'issue_date + days_due'})