【问题标题】:Django Queryset and filter() vs get() [duplicate]Django Queryset 和 filter() vs get() [重复]
【发布时间】:2017-08-11 12:19:55
【问题描述】:

filter和get有什么区别

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

【问题讨论】:

  • 正如文档所解释的,QuerySet 是实例的集合。什么让你困惑?

标签: python django django-models


【解决方案1】:

区别在于filter返回的是queryset对象,而get返回的是需要的对象。

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

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

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 2018-07-05
    • 2019-10-10
    • 2017-06-22
    • 2012-09-17
    • 2011-04-14
    • 2010-12-05
    相关资源
    最近更新 更多