2010-10-02 9 views
1

J'ai besoin de faire cette requête en utilisant Django QuerySystem.Aide avec Django Query

SELECT DATE(`date`), count(*) 
FROM `maggie_item` 
GROUP BY DATE(`date`) DESC 

Mon modèle:

Article

    date
  • = DateTime
  • title = textfield

Je vous serais reconnaissant de votre aide

+0

pertinente: http://docs.djangoproject.com/en/dev/topics/db/aggregation/# topics-db-aggregation –

+0

aussi, http://stackoverflow.com/questions/629551/how-to-query-as-group-by-in-django –

+0

Pouvez-vous également ajouter le modèle? –

Répondre

3

Dites que votre modèle est Item. Puis:

from django.db.models import Count 
Item.objects.values('date').annotate(Count('id')) 

Pour groupe par dates au lieu de datetimes:

Item.objects.extra(select = { 'date': "DATE(date)" }).values('date').annotate(Count('id')) 

Je n'ai fait cela sur Postgresql, où les travaux suivants, donc je suppose que la volonté ci-dessus pour vous.

Item.objects.extra(select={'date' : "date_trunc('day', date)"}).values('date').annotate(Count('id')) 
+0

C'est presque correct mais j'ai besoin de grouper par DATE ('date') (Dates au lieu de datetimes). Par exemple: Item.objects.values ​​('date'). Annotate (Count ('id')). Order_by ('date_date') –

+0

@Arturo: voir ma mise à jour. – ars

+0

Content de vous aider. :) – ars

0

Je ne trouve pas de toute façon de lancer et de groupe sur l'utilisation de Django système de requête, donc j'utiliser un curseur

from django.db import connection 

cursor = connection.cursor() 
cursor.execute("SELECT DATE(date), count(id) FROM maggie_item GROUP BY DATE(date) DESC") 
for a in cursor: 
    print a