在我的 django 应用程序中,一个条目有这个模型
from models import PENDING,CLOSED
class Entry(models.Model):
...
name = models.CharField(max_length=200)
status = models.CharField(max_length = 4,choices=status_values ,default = PENDING)
creation_date = models.DateTimeField(default=datetime.datetime.now)
closed_date = models.DateTimeField(null=True)
我需要找到所有Entry
具有CLOSED
状态的 s 以及关闭时间超过 4 天的 s。我没有在模型中使用任何称为持续时间的字段,但希望计算和之间的差异closed_date
,creation_date
如下所示
(closed_date-creation_date).days
我试图将查询编写为
entries = Entry.objects.filter((closed_date-creation_date).days > 4 )
在 django shell 我试过这个
In [9]:Entry.objects.filter((closed_date - creation_date).days > 4)
这会产生一个NameError
:
NameError:未定义名称“closed_date”
但是当我尝试获取一个条目并访问它的 closed_date 字段时,
In [9]: entry1 = Entry.objects.get(name='myentry')
In [10]: entry1.closed_date
Out[10]: datetime.datetime(2013, 4, 3, 14, 2, 4, 442518)
In [11]: entry1.creation_date
Out[11]: datetime.datetime(2013, 3, 17, 0, 0)
我无法弄清楚我在这里做错了什么..查询错误吗?
另外,当我尝试这个时,我得到一个语法错误:
In [12]: Task.objects.filter(status='CLOSED',(closed_date - creation_date).days > 4)
SyntaxError: non-keyword arg after keyword arg (<ipython console>, line 1)