跳转周末功能? Django/python
Jump weekends function? Django/python
我需要每天自动跳到星期六和星期日,这样我就可以计算模型中的某些元素。这是我需要创建的 table 的示例:
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 状态,之后我可以用现在的问题来计算它们。我的问题是,如果我过滤明天而明天是星期五,我需要在星期六和星期日跳转。换句话说,只需跳过周末就可以每天应用该逻辑。
查看 date.weekday() 函数。它是Python中date
和datetime
类的一个实例方法。它 returns 一周中的第几天作为整数,星期一为 0,星期日为 6。所以你想用 date.weekday() >= 5
跳过几天
您可以通过调用 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
我需要每天自动跳到星期六和星期日,这样我就可以计算模型中的某些元素。这是我需要创建的 table 的示例:
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 状态,之后我可以用现在的问题来计算它们。我的问题是,如果我过滤明天而明天是星期五,我需要在星期六和星期日跳转。换句话说,只需跳过周末就可以每天应用该逻辑。
查看 date.weekday() 函数。它是Python中date
和datetime
类的一个实例方法。它 returns 一周中的第几天作为整数,星期一为 0,星期日为 6。所以你想用 date.weekday() >= 5
您可以通过调用 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