PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

django pobiera miesiąc od daty do agregacji

Czy próbowałeś spojrzeć na swój schemat? Myślę, że właśnie pomyliłeś nazwę kolumny.

Zakładając, że używasz Djnago>=1.8, możesz również uniknąć całego problemu, pisząc Func jak ten:

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

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

i używając go w ten sposób:

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

W ten sposób 'Modified' to nazwa pola w Twoim modelu, a Django rozwiązuje nazwę kolumny za Ciebie.

Aktualizacja

Istnieje bardziej ogólne rozwiązanie proponowane w ten bilecie 1.9 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj listę wszystkich używanych tabel w zapytaniu SELECT w Postgresql

  2. Wyodrębnij miesiąc z daty w PostgreSQL

  3. Konfigurowanie trwałych danych dla Carto/Postgresql na ACI

  4. Migracja z MSSQL do PostgreSQL — co powinieneś wiedzieć

  5. dodanie brakującej daty w tabeli w PostgreSQL