从 Django 的 raw() 查询函数获取结果数

发布于 2024-09-05 18:17:46 字数 122 浏览 8 评论 0原文

我正在使用原始查询,但无法找出如何获取它返回的结果数。有办法吗?

编辑

.count() 不起作用。它返回:“RawQuerySet”对象没有属性“count”

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 attribute 'count'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

尐偏执 2024-09-12 18:17:46

您还可以首先将其转换为列表以获取长度,如下所示:

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

如果您希望获得模板中 RawQuerySet 的长度甚至条目的存在性,则需要这样做。只需像上面那样预先计算长度,并将其作为参数传递给模板即可。

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.

镜花水月 2024-09-12 18:17:46

我认为您正在谈论 raw() queryset 方法。与其他查询集一样,它会返回一个查询集。因此,您当然可以对其调用 .count(),就像调用任何其他 ORM 查询一样。

Edit 显示当您不这样做时会发生什么查看。正如您所注意到的,.raw() 返回一个没有 count 方法的 RawQuerySet - 并且它也不支持 len()。获取长度的唯一方法是迭代查询集并对它们进行计数:

sum(1 for result in results)

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)
千秋岁 2024-09-12 18:17:46

Count 适用于 RawQuerySet

 

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

Count Works on RawQuerySet

 

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文