首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在django中从查询集中获取第一个对象的最快方法?

在django中从查询集中获取第一个对象的最快方法?
EN

Stack Overflow用户
提问于 2011-02-26 07:26:15
回答 8查看 260.9K关注 0票数 260

我经常发现自己想从Django中的查询集中获取第一个对象,如果没有对象,则返回None。有很多方法可以做到这一点,而且都是有效的。但是我想知道哪一个是最好的。

代码语言:javascript
复制
qs = MyModel.objects.filter(blah = blah)
if qs.count() > 0:
    return qs[0]
else:
    return None

这会导致两个数据库调用吗?这看起来很浪费。这样会更快吗?

代码语言:javascript
复制
qs = MyModel.objects.filter(blah = blah)
if len(qs) > 0:
    return qs[0]
else:
    return None

另一种选择是:

代码语言:javascript
复制
qs = MyModel.objects.filter(blah = blah)
try:
    return qs[0]
except IndexError:
    return None

这会生成一个数据库调用,这很好。但是在很多时候都需要创建一个异常对象,当您真正需要的只是一个微不足道的if-test时,这是一件非常耗费内存的事情。

我怎样才能只用一个数据库调用就能做到这一点,而不会用异常对象搅动内存呢?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5123839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档