我有以下型号:
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模型语法,如果我这样做:
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解析所有结果)?