2016-08-16 2 views
0

У меня есть мнение, где я забирающий некоторые аналитические данные о регистрационной информации следующим образом:Джанго получить вчера войти в систему подсчета

def get_analytics(request): 

    total_users = User.objects.all().count() 
    # Number of users who dogged in once to our system today 
    today_login_count= User.objects.filter(last_login__startswith=timezone.now().date()).count() 

    #Number of users who dogged in once to our system in the last week 
    today = timezone.now().date() + timezone.timedelta(days=1) 
    last_week = timezone.now().date() - timezone.timedelta(days=7) 
    last_month = timezone.now().date() - timezone.timedelta(days=30) 
    week_login_count = User.objects.filter(last_login__range=(last_week, today)).count() 

    #Number of users who dogged in once to our system in the last month 
    month_login_count = User.objects.filter(last_login__range=(last_month, today)).count() 

    data = {} 
    data['total_users'] = total_users 
    data['today_login_count'] = today_login_count 
    data['week_login_count'] = week_login_count 
    data['month_login_count'] = month_login_count 

    return JSONResponse(data) 

Я хочу, чтобы получить общее количество пользователей, которые сделал авторизоваться только вчера. Как я могу его запросить?

ответ

1
User.objects.filter(
    last_login__date=timezone.now().date() - timedelta(days=1) 
).count() 
+0

Я думал о том же, но не дает ли это общее количество пользователей, которые вошли в систему за последние два дня, т.е. сегодня и вчера? – Nitish

+0

@Nitish Нет, это не так. Это даст, что если аргумент 'filter' -' last_login__date__gte = ... '. – user6718271

+0

Мне просто пришлось обновить его до 'User.objects.filter (last_login__startswith = timezone.now(). Date() - timezone.timedelta (days = 1)). Count()' – Nitish

Смежные вопросы