跳周末的逻辑Django/python
Logic to jump weekends Django/python
我得到了这个功能。我需要的是根据日期对我的模型进行一些更改。正如我的 if 语句如下所示,如果 "ddate" 是今天或明天,请在我的 "pull_ins" 列中进行一些更改并将其设置为 "Ready to ship" 但如果是后天和后天, 设置 "Not yet"。这行得通,但我的问题是我需要跳过周末并保持 4 天的逻辑,有什么想法吗?
例如,如果今天是星期四,则从今天、明天(星期五)获取日期 ----- 跳周末 --- 星期一、星期二。
这是我得到的:
def Ship_status():
week = {0, 1, 2, 3, 4}
deltaday = timedelta(days=1)
today = datetime.now().date()
day = today
day1 = day + deltaday
day2 = day1 + deltaday
day3 = day2 + deltaday
for i in Report.objects.all():
if i.ddate.weekday() in week:
if i.ddate == day:
i.pull_ins = "Ready to ship"
i.save()
if i.date == day1:
i.pull_ins = "Ready to ship"
i.save()
if i.date == day2:
i.pull_ins = "Not yet"
i.save()
if i.date == day3:
i.pull_ins = "not yet"
i.save()
感谢您的宝贵时间。
dateutil.rrule
是您可以利用的库。获取下一个工作日:
from dateutil import rrule
next_weekday = rrule.rrule(rrule.DAILY, count=3, byweekday=(0, 1, 2, 3, 4), dtstart=dt))
因此,在您的查询中,您可以这样做:
def compute_shipping(dt=datetime.datetime.date(), count=2):
next_weekdays = rrule.rrule(rrule.DAILY, count=count, byweekday=(0, 1, 2, 3, 4), dtstart=dt))
return list(next_weekdays)
#Ready to ship
Report.objects.filter(ddate__in=compute_shipping()).update(pull_ins="Ready to ship")
#For Not yet
#Query would be similar - just set the appropriate start date
我得到了这个功能。我需要的是根据日期对我的模型进行一些更改。正如我的 if 语句如下所示,如果 "ddate" 是今天或明天,请在我的 "pull_ins" 列中进行一些更改并将其设置为 "Ready to ship" 但如果是后天和后天, 设置 "Not yet"。这行得通,但我的问题是我需要跳过周末并保持 4 天的逻辑,有什么想法吗?
例如,如果今天是星期四,则从今天、明天(星期五)获取日期 ----- 跳周末 --- 星期一、星期二。
这是我得到的:
def Ship_status():
week = {0, 1, 2, 3, 4}
deltaday = timedelta(days=1)
today = datetime.now().date()
day = today
day1 = day + deltaday
day2 = day1 + deltaday
day3 = day2 + deltaday
for i in Report.objects.all():
if i.ddate.weekday() in week:
if i.ddate == day:
i.pull_ins = "Ready to ship"
i.save()
if i.date == day1:
i.pull_ins = "Ready to ship"
i.save()
if i.date == day2:
i.pull_ins = "Not yet"
i.save()
if i.date == day3:
i.pull_ins = "not yet"
i.save()
感谢您的宝贵时间。
dateutil.rrule
是您可以利用的库。获取下一个工作日:
from dateutil import rrule
next_weekday = rrule.rrule(rrule.DAILY, count=3, byweekday=(0, 1, 2, 3, 4), dtstart=dt))
因此,在您的查询中,您可以这样做:
def compute_shipping(dt=datetime.datetime.date(), count=2):
next_weekdays = rrule.rrule(rrule.DAILY, count=count, byweekday=(0, 1, 2, 3, 4), dtstart=dt))
return list(next_weekdays)
#Ready to ship
Report.objects.filter(ddate__in=compute_shipping()).update(pull_ins="Ready to ship")
#For Not yet
#Query would be similar - just set the appropriate start date