Django Queryset 和 filter() 与 get() [英] Django Queryset and filter() vs get()

查看:31
本文介绍了Django Queryset 和 filter() 与 get()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

filter 和 get 的区别是什么

What is the Difference between filter and get

    >>> Question.objects.filter(id=1)
    <QuerySet [<Question: What's new?>]>
    >>> Question.objects.get(pk=1)
    <Question: What's new?>

推荐答案

区别在于 filter 返回一个 queryset 对象,而 get 返回所需的对象.

The difference is that filter returns a queryset object, wheras get returns the required object.

如果您使用 filter(),您通常会在您期望不止一个对象符合您的条件时执行此操作.如果未找到与您的条件匹配的项目,filter() 将返回空查询集,而不会引发错误.

If you use filter(), you typically do this whenever you expect more than just one object that matches your criteria. If no item was found matching your criteria, filter() returns am empty queryset without throwing an error.

如果您使用 get(),您期望有一个(并且只有一个)符合您的条件的项目.如果该项目不存在或存在多个符合您的条件的项目,则 Get 会引发错误.因此,您应该始终在 try.. except .. 块中使用 if 或使用 get_object_or_404 等快捷函数,以便正确处理异常.

If you use get(), you expect one (and only one) item that matches your criteria. Get throws an error if the item does not exist or if multiple items exist that match your criteria. You should therefore always use if in a try.. except .. block or with a shortcut function like get_object_or_404 in order to handle the exceptions properly.

这篇关于Django Queryset 和 filter() 与 get()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆