J'ai une table qui ressemble à:visites compte Django à une date de champ datetime pour un utilisateur particulier
+-------+---------+---------------------+-------------+-----------+-----------------+
| 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
est une clé étrangère, visit_time
est l'horodatage de la visite d'une page.
L'idée est de trouver le nombre de visites de chaque utilisateur pour une journée. Une ligne séparée doit être retournée pour chaque jour pour chaque utilisateur.
Il devrait ressembler à:
{'user' : 818 , 'day' : 2017-05-15 , 'visits' : 12}
{'user' : 817 , 'day' : 2017-05-15 , 'visits' : 5 }
Je suis en train de construire la requête en utilisant Django ORM.
Voici la définition du modèle:
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)
Je suis en mesure d'extraire la date de visit_time
en utilisant:
Log.objects.annotate(day = RawSQL('DATE(visit_time)',[]))
Comment puis-je obtenir les données souhaitées à l'aide de Django ORM?
La base de données utilisée est MySQL.
Quelle version de django utilisez-vous? Avez-vous vu ce lien? http://stackoverflow.com/questions/8746014/django-group-by-date-day-month-year – Colwin
J'utilise Django 1.11. La réponse là-dedans semble fonctionner sauf la partie 'TruncDate' (renvoie le jour comme None). J'ai utilisé 'RawSQL (DATE (visit_time))' à la place et cela a fonctionné. Merci. –