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 模块。从修改后的时间和减法中创建一个Python日期时间对象。它应该工作。

于 2011-03-07T18:53:11.713 回答
0

您可以使用 python 的日历库返回日期列表。请注意,它不处理闰年,因此您需要为此实施解决方案。

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

以这种方式获取当月的天数,然后计算您需要的时间增量。您需要从列表中删除第一个元素以使其工作。

>>> 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 回答