如何按用户查找Django应用程序中的登录总数?

时间:2019-06-25 10:56:08

标签: python django python-2.7 django-models django-rest-framework

在Django User表中,我们可以检查last_login, 但是我想查看用户当月的登录总数。

是我可以直接在系统中使用的任何功能。

OR

我需要在登录视图中进行更改吗,每当每次用户登录时,我都可以在Django模型中创建一个条目吗?

我想要这样的数据:

Users   JunLogin  FebLogin
Virat    10         30
Sachin   9          11

请给我建议最好的方法。

预先感谢

4 个答案:

答案 0 :(得分:1)

您可以利用Django signals并连接到the login signal

并将所需的信息存储在单独的模型中。

答案 1 :(得分:0)

您需要创建一个单独的模型来存储这些详细信息:

class LoginDetails(models.Model):
    user_id = models.ForeignKey(User, on_delete=models.CASCADE)
    login_time = models.DateTimeField(default=datetime.now(), blank=False)

#Query to calculate the users login count 
from django.db.models import Count
from datetime import datetime, timedelta
last_month = datetime.today() - timedelta(days=30)

login_details = LoginDetails.objects.filter(my_date__gte=last_month).values('user_id').annotate(total=Count('user_id'))

答案 2 :(得分:0)

Django为此不提供任何API。

可能会有一些棘手的方法,例如计算与用户的会话数,您可能会获得他们的登录次数,但是,如果会话终止,则将丢失数据。

最好的方法是在登录视图中添加一个记录器,以计算每次成功登录的次数。

它不会占用很多资源,但是会产生一些有用的信息。

答案 3 :(得分:0)

没有任何可用的方法。您可以创建一个表,在该表中,当用户登录时,该表将增加一。