开发者

Get number of results from Django's raw() query function

I'm using a raw query and i'm having trouble finding out how to get the number of results it returns. Is there a way?

edit

.count() doesnt work. it returns: 'RawQuerySet' object has no attribu开发者_Go百科te 'count'


You can also cast it first to a list to get the length, like so:

results = ModelName.objects.raw("select * from modelnames_modelname")
len(list(results))  #returns length

This is needed if you want to have the length or even the existence of entries in the RawQuerySet in templates as well. Just precalculate the length like above, and pass it as a parameter to the template.


I presume you're talking about the raw() queryset method. That returns a queryset just like any other. So of course you can call .count() on it, just like you would on any other ORM query.

Edit Shows what happens when you don't check. As you note, .raw() returns a RawQuerySet which doesn't have a count method - and neither does it support len(). The only way to get the length is to iterate through the queryset and count them:

sum(1 for result in results)


Count Works on RawQuerySet

 

ModelName.objects.raw("select 1 as id , COUNT(*) from modelnames_modelname")

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜