約會拜訪我有一個表,看起來像: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))'代替它,它工作。謝謝。 –