Die folgende Tabelle erstellt ein neues Feld im Abfrage-Set namens visit_date
: Das ist das Datum (ohne Zeitangabe) aus dem created_at
Attribut Ihres Modells. die Count
Funktion können wir die queryset durch den Benutzer und das Datum dann die Gruppe, und die Anzahl der Besuche pro Tag zählen:
from django.db.models import Count
week = timezone.now().date() - timedelta(days=7)
visits = Visit.objects.filter(created_at__gte=week)).extra({'visit_date' : 'date(created_at)'}).values('user', 'visit_date').annotate(visits_on_date=Count('pk'))
Der visits
queryset Willen etwas entlang der Linien von aussieht:
[
{'user': 1, 'visit_date': datetime.date(2016, 11, 4), 'visits_on_date': 2},
{'user': 2, 'visit_date': datetime.date(2016, 11, 4), 'visits_on_date': 5},
{'user': 1, 'visit_date': datetime.date(2016, 11, 3), 'visits_on_date': 7},
{'user': 2, 'visit_date': datetime.date(2016, 11, 3), 'visits_on_date': 9},
{'user': 1, 'visit_date': datetime.date(2016, 11, 2), 'visits_on_date': 5}
]
Jedes Element im Abfrage-Set bezieht sich auf einen eindeutigen Besuch für dieses Datum für einen bestimmten Benutzer. Sie können die Anzahl der eindeutigen Besuche bestimmen:
visits.count()
die in diesem Fall wäre 5.
Sie können dies auch verwenden, um die Anzahl der Besuche ein bestimmte Benutzer macht, zu bestimmen, indem am visits_on_date
suchen Feld im Abfrage-Set.
Erstaunlich! Vielen Dank. – Goran