PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

django obtient le mois à partir de la date pour l'agrégation

Avez-vous essayé de regarder votre schéma? Je pense que vous vous êtes simplement trompé de nom de colonne.

En supposant que vous utilisez Djnago>=1.8, vous pouvez également éviter tout le problème en écrivant un Func comme celui-ci :

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

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

et l'utiliser comme ceci :

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

Par ici 'Modified' est le nom du champ sur votre modèle et Django résout le nom de la colonne pour vous.

Mettre à jour

Il existe une solution plus générique proposée dans ce ticket 1.9 .