约会拜访我有一个表,看起来像:Django的计数从日期时间字段为特定用户
+-------+---------+---------------------+-------------+-----------+-----------------+
| 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_id
是一个外键,visit_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)
我一直在使用能够从visit_time
提取日期:
Log.objects.annotate(day = RawSQL('DATE(visit_time)',[]))
我怎样才能使用Django ORM所需要的数据?
正在使用的数据库是MySQL。
?你看过这个链接吗? http://stackoverflow.com/questions/8746014/django-group-by-date-day-month-year – Colwin
我使用的是Django 1.11。在那里的答案似乎工作,除了'TruncDate'部分(返回一天None)。我用'RawSQL(DATE(visit_time))'代替它,它工作。谢谢。 –