J'utilise une requête crue et j'ai du mal à trouver comment obtenir le nombre de résultats qu'il revient. Y a-t-il un moyen? P>
.Count () ne fonctionne pas. Il renvoie: l'objet 'rawqueryset' n'a aucun attribut 'Nombre' P>
3 Réponses :
Je présume que vous parlez de la méthode brut () code> QuerySet. Qui retourne un queryset comme tout autre. Donc, bien sûr, vous pouvez appeler
.Count () code> dessus, comme vous le feriez sur une autre requête Orm. Strike>
.raw () code> retourne un rawqueryset qui n'a pas de méthode de comptage - et il ne prend en charge pas non plus
len () code>. Le seul moyen d'obtenir la longueur est de itérer à travers le querySet et comptez-les: p>
J'ai essayé cela. Je reçois: "RawquerySet 'Object n'a aucun attribut' Compte '
Je pensais qu'il n'y avait pas une méthode. Merci beaucoup.
Cela force la requête à évaluer non?
Vous pouvez également la jeter d'abord à une liste pour obtenir la longueur, comme:
results = ModelName.objects.raw("select * from modelnames_modelname") len(list(results)) #returns length
Cela force la requête à évaluer non? Si vous ne voulez que le compte, cela coûte cher.
Comme @ @ SK9 a dit: Ceci est beaucoup cher.
Count fonctionne sur RawQuerySet
ModelName.objects.raw("select 1 as id , COUNT(*) from modelnames_modelname")
Malheureusement: "wontfix": code.djangoproject.com/ticket/32058