Django Queryset和filter()对get()

2024-04-25 13:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

filter和get的区别是什么

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

Tags: idnewgetobjectsfilterwhatquerysetquestion
2条回答

在“filter”中,您可以添加更多的属性到search by,或者您可以获得满足您对DB的查询的对象列表。

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

如果使用filter(),则通常在期望不止一个对象符合条件时执行此操作。如果没有找到与条件匹配的项,filter()将返回am empty queryset而不引发错误。

如果使用get(),则需要一个(并且只有一个)符合条件的项。如果项不存在或存在多个符合条件的项,Get将引发错误。因此,在尝试时,您应该始终使用if。。除了。。阻止或使用快捷方式函数(如get_object_或_404)以正确处理异常。

相关问题 更多 >