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

django riceve il mese dalla data per l'aggregazione

Hai provato a guardare il tuo schema? Penso che tu abbia appena sbagliato il nome della colonna.

Supponendo che tu stia usando Djnago>=1.8 puoi anche evitare l'intero problema scrivendo un Func come questo:

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

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

e usandolo in questo modo:

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

In questo modo 'Modified' è il nome del campo sul tuo modello e Django risolve il nome della colonna per te.

Aggiorna

C'è una soluzione più generica proposta in questo biglietto 1.9 .