2016-04-25 4 views
0

Gibt es eine Möglichkeit, eine User count() basierend auf der date_joined gruppiert nach Jahr/Monat mit Django ORM zu bekommen?Django Query Benutzerwachstum nach Monat

konnte ich diese Daten mit rohen SQL auf meinem Django/Postgres Projekt wie dieses erhalten:

from django.db import connection 
...  
    cursor = connection.cursor() 
    cursor.execute(''' 
     SELECT 
      to_char(date_joined, 'YYYY/MM') as month, 
      cast(count(id) as int) as total 
     FROM users_user 
     GROUP BY month 
     ORDER BY month DESC 
     ''') 

dass gibt mir eine Liste wie: [('2015/12', 105), ('2016/01' , 78), ('2016/02', 95)...]

Antwort

2

Versuchen:

from django.contrib.auth.models import User 
from django.db.models import Count 

User.objects.all() \ 
     .extra({'created': "to_char(date_joined, 'YYYY/MM')"}) \ 
     .values('created') \ 
     .annotate(created_count=Count('id')) \ 
     .order_by('-created') 
+0

Wenn Sie '\\' für die Zeilenfortsetzung verwenden, wird es abgebrochen, wenn Sie nachgestellte Leerzeichen haben. Verwenden Sie stattdessen Klammern. –