2010-06-07 7 views
3

Je veux utiliser annotate pour compter le nombre d'occurrences dans mon modèle, mais il n'utilise pas le bon champ dans le groupe par état. au lieu d'utiliser le champ que je veux (c'est-à-dire celui spécifié dans la fonction count), il utilise la clé primaire du modèle. par exemple.Spécifier le groupe par domaine dans django 1.2

ObjectHistory.objects.annotate(revisions=Count('resource')) 

produit sql

SELECT *, COUNT(`resources_objecthistory`.`resource_id`) AS `revisions` FROM `resources_objecthistory` GROUP BY `resources_objecthistory`.`history_id` 

history_id est la clé primaire de

ObjectHistory

ce que je veux est:

SELECT *, COUNT(`resources_objecthistory`.`resource_id`) AS `revisions` FROM `resources_objecthistory` GROUP BY `resources_objecthistory`.`resource_id 

Je trouve que, en mettant

ObjectHistory.objects.values.('resource').annotate(revisions=Count('resource')) 

il a mis le bon groupe par domaine, mais je n'ai pas eu accès aux autres champs du modèle.

Comment spécifier l'utilisation de resource_id dans le champ group by?

Répondre

0

utilisation du procédé tel que documenté brut here

par exemple,

ObjectHistory.objects.raw ("SELECT *, COUNT (resources_objecthistory. resource_id) AS revisions DE resources_objecthistory GROUP BY resources_objecthistory .`resource_id")

0

Essayer:

ObjectHistory.objects.values.('resource').\ 
    extra(select_params=('attribute1', 'attribute2'))\ 
    .annotate(revisions=Count('resource')) 
Questions connexes