0
class Case( models.Model ):
created          = models.DateTimeField()    
modified          = models.DateTimeField()

STATUS = (
    ('Active', 'Active'),
    ('Hold', 'Hold'),
    ('Expired', 'Expired'),
    ('Cancelled', 'Cancelled'),
)
status     = models.CharField(max_length=32, choices=STATUS)

今、ステータスが2か月以内に期限切れになったレコードを抽出したいのですが、単に2か月以上前に期限切れになったものはカウントされません。

私は読ん __here subtraction of datesだことがありますが、私の場合はうまくいきません。

 expired_cases = Case.objects.filter( status = 'Expired', modified__lt = datetime.now() - timedelta(days=60) ).count()  

この種のクエリは機能する可能性がありますが、これで日数をハードコーディングしたくありませんでした。

この問題で私を助けてください。事前に感謝します:)

4

2 に答える 2

0

python-dateutilモジュールを使用します。変更された時間と減算からPythondatetimeobjectを作成します。動作するはずです。

于 2011-03-07T18:53:11.713 に答える
0

python の calendar lib を使用して、日のリストを返すことができます。うるう年を処理しないため、そのためのソリューションを実装する必要があることに注意してください。

>>> days = calendar.mdays
[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

この方法で現在の月の日を取得し、必要な timedelta を計算します。リストを機能させるには、リストから最初の要素を削除する必要があります。

>>> days = days[1:]
>>> month = datetime.date.today().month-1 #-1 due to 0-based indexing in list
>>> delta = days[month-1] + days[month-2]
于 2011-03-08T14:41:39.547 に答える