sql >> Database teknologi >  >> RDS >> PostgreSQL

django får måned fra dato til sammenlægning

Har du prøvet at se på dit skema? Jeg tror, ​​du lige har misforstået dit kolonnenavn.

Forudsat at du bruger Djnago>=1.8, kan du også undgå hele problemet ved at skrive en Func som denne:

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

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

og bruge det sådan her:

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

På denne måde 'Modified' er navnet på feltet på din model, og Django løser kolonnenavnet for dig.

Opdater

Der er en mere generisk løsning foreslået i denne 1.9-billet .




  1. Tillad adgang til Postgresql fra enhver computer

  2. Indlæs xml i mysql-tabel med element

  3. PostgreSQL UUID-type ydeevne

  4. Hvordan tilføjer man en vognretur til en værdi i MySQL?