2016-09-27 6 views
1

토요일과 일요일을 자동으로 매일 실행해야하므로 모델에서 특정 요소를 계산할 수 있습니다.주말 점프 기능이 필요합니까? Django/python

이는 다음과 같습니다

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) 

이것은 내가의 오늘은 보유 수를 계산 필터링, 나는 일일 추가하여 점점 계속 할 수있는 방법입니다 : 이것은 내가 만드는 데 필요한 테이블의 예입니다 내 모델 (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

그림에 표시된 코드가 하루 동안 작동하기 때문에,'오늘 ', 당신이 보여주지 않은 코드가 더 있다고 가정합니다. 모든 코드를 보여주지 않고 어떻게 실패했는지 명확하게 설명하면 도움을 줄 수 없습니다. – CAB

+0

당신은 당신이 사용하고있는 것을 말하지 않았고, Django ORM과 비슷하지만 장고 또는 일반적인 파이썬 문제인지는 알지 못합니다. – polku

+0

죄송합니다. 예, 저는 장고를 사용하고 있습니다. 더 많은 모드를 업로드하겠습니다. 내가 더 명확하게하려고 노력할 것입니다. – Deluq

답변

1

당신은의 평일 번호를 찾을 수 있습니다 : 그것은 여기 더보기 6. 그래서 당신은 date.weekday() >= 5

와 함께 일을 생략 할 것이다 0으로 월요일과 일요일, 정수와 같이 요일을 반환 datetime을 호출하여 weekday() 메서드를 호출합니다. 당신이 그 값을 갖게되면 당신은 볼을 테스트 할 수있는 경우는 관심있는 일 중 하나

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 
+0

마틴, 락! – Deluq

+0

동일한 논리를 적용하고 그것을 계산할 때 중복을 무시하면 어떨까요? – Deluq

+0

확인 된 날짜 범위가 연속 7 일 이상인 경우에만 중복 항목을 갖게됩니다. – martineau