sql >> Databasteknik >  >> RDS >> PostgreSQL

django får månad från datum för aggregering

Försökte du titta på ditt schema? Jag tror att du har missuppfattat ditt kolumnnamn.

Förutsatt att du använder Djnago>=1.8 kan du också undvika hela problemet genom att skriva en Func som den här:

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

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

och använder det så här:

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

På så sätt 'Modified' är namnet på fältet på din modell och Django löser kolumnnamnet åt dig.

Uppdatera

Det finns en mer generisk lösning som föreslås i denna 1.9-biljett .




  1. PDO::PARAM för typ decimal?

  2. Hur tillämpar man bindValue-metoden i LIMIT-satsen?

  3. Vad är SQL Server? (Definition, versioner, upplagor)

  4. Okänd kolumn {0} i on-sats