Ich habe ein Abfrage-Set, das Objekte wie folgt zurückgibt:
[
{created_at: "2018-03-01"},
{created_at: "2018-03-01"},
{created_at: "2018-03-02"}
]
Ich möchte die Anzahl eindeutiger Tage aus meinem Abfrage-Set auswählen. Im obigen Beispiel wäre die erwartete Antwort 2
.
Meine aktuelle Abfrage sieht so aus, wo created_at
ist ein DateTimeField
:
from django.db.models import Count
from django.db.models.functions import TruncDate
days = queryset.annotate(date=TruncDate("created_at"))
.values("date")
.annotate(dates=Count("date"))
Leider kommt das zurück 3
, nicht das erwartete 2
.
Antworten:
0 für die Antwort № 1Scheint wie die Lösung war Aggregieren Sie eine Anmerkung und benutze auch die .distinct()
Methode, um sicherzustellen, dass jedes Datum eindeutig ist.
Also letzte Abfrage war:
dates = queryset.annotate(date=TruncDate("created_at"))
.values("date")
.distinct()
.aggregate(dates=Count("date"))