/ / Django zählt eindeutige Datumsangaben in Queryset - Python, Django

Django zählt eindeutige Datumsangaben in Queryset - Python, Django

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 № 1

Scheint 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"))