python | April 02, 2020
filter할 parameter를 받아서, dictoionary에 filter condition들을 넣는다.
함수에서 최종 return한 filter condition을 사용할 때는 **
를 붙여서 사용한다.
User.objects.filter(**get_filter_condition(time_delta))
datetime instance 간의 기간 차이를 나타낸다.
timedelta를 더하거나 빼서 기준 날짜의 전후를 계산한다.
timedelta(weeks = 7) #7주 후
timedelta(days = -7) #7일 전
timedelta(hours = 7)
timedelta(seconds = 7)
timedelta(days = 1, hours =-7) #1일 후의 7시간 전
date.today()
: 오늘 날짜datetime.now()
: 현재 시간date.today()
를 적용해서 하루 전체의 data가 return 되도록 하였다.datetime.now()
를 사용하여 현재시간까지 들어온 오늘의 data가 보여질 수 있도록 했다.from datetime import datetime, timedelta, date
def get_filter_condition(time_delta):
filter_condition = {}
if time_delta:
start_date = date.today() - timedelta(days = int(time_delta))
else:
start_date = Score.objects.earliest('created_at').created_at.date()
filter_condition["score__created_at__range"] = (start_date, datetime.now())
return filter_condition