0

私のジャンゴアプリでは、エントリにはこのモデルがあります

    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クローズするのに 4 日以上かかったものをすべて見つける必要があります。モデルで期間と呼ばれるフィールドを使用していませんが、以下のようにclosed_dateとの差を計算したいと考えていました。creation_date

(closed_date-creation_date).days

クエリを次のように記述しようとしました

entries = Entry.objects.filter((closed_date-creation_date).days > 4 )

ジャンゴシェルでこれを試しました

In [9]:Entry.objects.filter((closed_date - creation_date).days > 4)

これにより、次が生成されますNameError

NameError: 名前 'closed_date' が定義されていません

しかし、Entry を取得して、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)
4

1 に答える 1