Python Django统计特定用户在date from datetime字段上的访问次数

Python Django统计特定用户在date from datetime字段上的访问次数,python,mysql,django,django-orm,Python,Mysql,Django,Django Orm,我有一张桌子,看起来像: +-------+---------+---------------------+-------------+-----------+-----------------+ | id | user_id | visit_time | action | user_type | erp_customer_id | +-------+---------+---------------------+-------------+

我有一张桌子,看起来像:

  +-------+---------+---------------------+-------------+-----------+-----------------+
    | id    | user_id | visit_time          | action      | user_type | erp_customer_id |
    +-------+---------+---------------------+-------------+-----------+-----------------+
    | 17460 |     818 | 2017-05-15 15:02:13 | NULL        | customer  |             932 |
    | 17459 |     818 | 2017-05-15 15:02:11 | NULL        | customer  |             932 |
    | 17458 |     818 | 2017-05-15 15:01:56 | NULL        | customer  |             932 |
    | 17457 |     818 | 2017-05-15 15:01:55 | NULL        | customer  |             932 |
    | 17456 |     818 | 2017-05-15 15:01:47 | NULL        | customer  |             932 |
    | 17455 |     818 | 2017-05-15 15:01:15 | NULL        | customer  |             932 |
    | 17454 |     818 | 2017-05-15 15:00:44 | NULL        | customer  |             932 |
    | 17453 |     818 | 2017-05-15 14:59:58 | NULL        | customer  |             932 |
    | 17452 |     818 | 2017-05-15 14:59:55 | NULL        | customer  |             932 |
    | 17451 |     818 | 2017-05-15 14:59:55 | NULL        | customer  |             932 |
    | 17450 |     818 | 2017-05-15 14:59:52 | NULL        | customer  |             932 |
    | 17449 |     817 | 2017-05-15 14:55:46 | NULL        | customer  |             931 |
    | 17448 |     817 | 2017-05-15 14:55:45 | NULL        | customer  |             931 |
    | 17447 |     817 | 2017-05-15 14:53:55 | NULL        | customer  |             931 |
    | 17446 |     817 | 2017-05-15 14:53:54 | NULL        | customer  |             931 |
    | 17445 |     817 | 2017-05-15 14:53:26 | NULL        | customer  |             931 |
user\u id
是外键,
visit\u time
是访问页面的时间戳

其想法是找出每个用户一天的访问次数。应为每个用户每天返回一行

所以它应该看起来像:

{'user' : 818 , 'day' : 2017-05-15 , 'visits' : 12}
{'user' : 817 , 'day' : 2017-05-15 , 'visits' : 5 }
我正在尝试使用Django ORM构造查询

以下是模型定义:

class Log(models.Model):
    class Meta:
        db_table = "users_log"
        managed = False
    user = models.ForeignKey(LoginCustomer , db_column = "user_id")
    customer = models.ForeignKey(Customer , db_column = "erp_customer_id")
    visit_time = models.DateTimeField()
    user_type = models.CharField(max_length = 25)   
我已经能够使用以下工具从
访问时间中提取日期:

Log.objects.annotate(day = RawSQL('DATE(visit_time)',[]))
如何使用Django ORM获得所需的数据

正在使用的数据库是MySQL。

您需要使用

from django.db.models import Count
from django.db.models.functions import TruncDay
Log.objects
.annotate(period=TruncDay('visit_time'))
.values('period', 'user_id')
.annotate(visits=Count('id'))
.values('period', 'visits')

您使用的是什么版本的django?你看到这个链接了吗?我正在使用Django 1.11。除了
TruncDate
部分(返回日期为无)之外,这里的答案似乎有效。我改用了
RawSQL(日期(访问时间))
,它成功了。谢谢。为了清楚起见:不应该用
visions=Count('user\u id')
来计算访问次数吗?我们正在计算行数,所以可以使用id。此外,如果这个答案解决了您的问题,请向上投票并将其标记为接受:)明白。谢谢另外,
queryset.values()
返回django模型管理中无法使用的字典实例。你知道我如何在管理中使用这个查询集的结果吗?