我有这个功能。我需要的是根据当天对我的模型进行一些更改。正如下面显示的if语句,如果“ddate”是今天或明天在我的“pull_ins”列中进行一些更改并将其设置为“Ready to ship”,但如果是后天和第二天,请设置“Not”然而”。这是有效的,但我的问题是我需要跳周末并保持4天的逻辑,任何想法?
作为一个例子,如果今天是Thrusday从今天,明天(周五)-----跳跃周末---星期一,星期二来获得日期。
这就是我得到的:
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()
感谢您的时间。
答案 0 :(得分:1)
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