PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django erhält Monat ab Datum für die Aggregation

Hast du versucht, dir dein Schema anzusehen? Ich glaube, Sie haben Ihren Spaltennamen falsch verstanden.

Angenommen, Sie verwenden Djnago>=1.8, können Sie das ganze Problem auch vermeiden, indem Sie einen Func schreiben wie dieses hier:

class ExtractMonth(Func):
    template = "EXTRACT(MONTH FROM %(expressions)s)"

    def __init__(self, *expressions, **extra):
        extra['output_field'] = SmallIntegerField()
        super().__init__(*expressions, **extra)
       

und wie folgt verwenden:

Subscription.objects.annotate(Month=ExtractMonth('Modified'))\
                .values('Month').annotate(Count('Month'))

Auf diese Weise 'Modified' ist der Name des Felds in Ihrem Modell und Django löst den Spaltennamen für Sie auf.

Aktualisieren

Es gibt eine allgemeinere Lösung, die in diesem 1.9-Ticket vorgeschlagen wird .