我需要每天自动跳跃周六和周日所以我可以从模型中计算某些元素。这是我需要创建的表的一个示例:
Date ------- Order Holds
Today ------ 45 (wednesday)
09/09/16 --- 34 (Thursday)
10/09/16 --- 23 (Friday)
-----JUMP WEEKEND --- (and keep count in)
13/09/16 --- 56 (Monday)
14/09/16 --- 14 (Tuesday)
这就是我如何过滤来计算今天的保留数量,我可以通过增加1天来获取它们:
这是我的模型(models.py):
class Data(models.Model):
date = models.DateField(null=True, blank=True)
ban = models.CharField(max_length=10)
这是我的逻辑(views.py)
的一部分today = datetime.today()
tomorrow = today + timedelta(days=1)
orders = Data.objects.filter(date=today)
ban = orders.filter(ban__contains="BAN").count()
正如您在我的views.py逻辑中所看到的,我可以从今天的日期过滤掉所有BAN状态,之后我可以用现在的问题来计算它们。我的问题是,如果我明天过滤,明天是星期五,我需要在周六和周日跳过。换句话说,只需跳过周末就可以应用这种逻辑。
答案 0 :(得分:1)
您可以通过调用weekday()
方法找到datetime
的工作日编号。一旦你有了这个价值,你就可以测试它,看看你感兴趣的日子之一是什么:
from datetime import datetime, timedelta
DAYS_OF_INTEREST = {0, 1, 2, 3, 4} # Monday-Friday
DELTA_ONE_DAY = timedelta(days=1)
today = datetime.today()
day = today
for _ in range(14): # next two weeks
if day.weekday() in DAYS_OF_INTEREST:
print(day.strftime(("%d/%m/%y --- %A")))
#orders = Report.objects.filter(current_fcd_date=day)
#hold = orders.filter(order_hold__contains="HOLD").count()
day += DELTA_ONE_DAY
输出:
27/09/16 --- Tuesday
28/09/16 --- Wednesday
29/09/16 --- Thursday
30/09/16 --- Friday
03/10/16 --- Monday
04/10/16 --- Tuesday
05/10/16 --- Wednesday
06/10/16 --- Thursday
07/10/16 --- Friday
10/10/16 --- Monday
答案 1 :(得分:0)
查看date.weekday()函数。它是Python中date
和datetime
类的实例方法。它以整数形式返回星期几,星期一为0,星期日为6.因此,您希望跳过date.weekday() >= 5