相关疑难解决方法(0)

在django使用F()和timedelta进行查询

我有以下型号:

class Process(models.Model):
  title = models.Charfield(max_length=255)
  date_up = models.DateTimeField(auto_now_add=True)
  days_activation = models.PositiveSmallIntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

现在我需要Process根据它们的值来查询已过期的所有对象days_activation.

我试过了

from datetime import datetime, timedelta

Process.objects.filter(date_up__lte=datetime.now()-timedelta(days=F('days_activation')))
Run Code Online (Sandbox Code Playgroud)

并收到以下错误消息:

TypeError:timedelta days组件的不支持类型:F

我当然可以用Python做到这一点:

filter (lambda x: x.date_up<=datetime.now() - timedelta(days=x.days_activation), 
        Process.objects.all ()), 
Run Code Online (Sandbox Code Playgroud)

但我真的需要制作一个django.db.models.query.QuerySet.

django orm

9
推荐指数
2
解决办法
2739
查看次数

Django:在查询中的datetime.timedelta中使用F参数

使用Django模型语法,如果我这样做:

ThatModel.objects.filter(
    last_datetime__lte=now + datetime.timedelta(seconds=F("interval")))
Run Code Online (Sandbox Code Playgroud)

我明白了:

TypeError: unsupported type for timedelta days component: ExpressionNode
Run Code Online (Sandbox Code Playgroud)

有没有办法使用纯Django语法(而不是用Python解析所有结果)?

django model typeerror timedelta

8
推荐指数
2
解决办法
3086
查看次数

标签 统计

django ×2

model ×1

orm ×1

timedelta ×1

typeerror ×1