def week_days_activity(self):
has = []
today = datetime.now().today()
1_day_ago = today - timedelta(days=1)
2_days_ago = today - timedelta(days=2)
3_days_ago = today - timedelta(days=3)
qs = User_activity.objects
if qs.filter(timestamp__gte = 1_day_ago).count():
has.append(1)
else :
has.append(0)
if qs.filter(timestamp__range= (2_days_ago, 1_day_ago)).count():
has.append(2)
else :
has.append(0)
if qs.filter(timestamp__range= (3_days_ago, 2_days_ago)).count():
has.append(3)
else :
has.append(0)
return has
Read more about __range
here
A slightly more readable approach (IMO):
has = [0, 0, 0]
today = datetime.now().today()
1_day_ago = today - timedelta(days=1)
2_days_ago = today - timedelta(days=2)
3_days_ago = today - timedelta(days=3)
qs = User_activity.objects
if qs.filter(timestamp__gte = 1_day_ago).count():
has[0] = 1
if qs.filter(timestamp__range= (2_days_ago, 1_day_ago)).count():
has[1] = 2
if qs.filter(timestamp__range= (3_days_ago, 2_days_ago)).count():
has[2] = 3
return has