Django models Django过滤器与get-in模型

Django models Django过滤器与get-in模型,django-models,Django Models,我是Django的新手,想了解filter和get之间的区别 得到 滤器 Entry.objects.filter(id__exact=14) 上述说法有什么不同 提前感谢。如果您知道某个对象与您的查询匹配,请使用get。如果不止一个,它将失败,并给出如下错误: Traceback (most recent call last): File "<console>", line 1, in <module> File "/u

我是Django的新手,想了解filter和get之间的区别

得到

滤器

Entry.objects.filter(id__exact=14)
上述说法有什么不同


提前感谢。

如果您知道某个对象与您的查询匹配,请使用
get
。如果不止一个,它将失败,并给出如下错误:

Traceback (most recent call last):

    File "<console>", line 1, in <module>
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 143, in         get
    return self.get_query_set().get(*args, **kwargs)
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 407, in get
    (self.model._meta.object_name, num))
    MultipleObjectsReturned: get() returned more than one Poll -- it returned 2!
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py”,get中第143行
返回self.get\u query\u set().get(*args,**kwargs)
文件“/usr/local/lib/python2.7/dist packages/django/db/models/query.py”,第407行,在get中
(self.model.\u meta.object\u name,num))
multipleObjectsReturn:get()返回了多个轮询——它返回了2!

否则,请使用
filter
,它将为您提供一个对象列表。

基本上,当您要获取单个唯一对象时,请使用
get
,当您要获取与查找参数匹配的所有对象时,请使用filter

 __data = User.objects.get(is_active=1).exclude(id=id)
错误:get()返回了多个用户--它返回了19!, 类型:

------成功的-------

-------成功的------


get只会带来一个元素,该元素与您要查找的内容相等,但是
过滤器会带来与您想要的项目相关的所有内容

过滤器返回找到的许多东西。 只返回一件你想要的东西

例如:

得到

滤器

Groups.objects.filter(user=1)

为了补充别人所说的话。。。(get只返回一条记录,而filter返回一个集合),需要注意的一点是结果的类型

get()返回一个对象,而filter返回一个queryset类型。这意味着你可以做类似的事情

age = User.objects.get(name="Ryan").age
然而,如果您使用过滤器,则需要执行两个额外步骤:

ages = User.Objects.filter(name="ryan").values('age')
for user_age in users:
    print(user_age)

需要注意的重要一点是,过滤器返回一个iterable类型,其中包含一个values()方法,该方法指示您需要哪些字段。Get只返回一个带有字段作为属性的对象,因此获取所需数据要简单得多。

Duplicate of the也可以是Duplicate of the可能的Duplicate of the这是否回答了您的问题?此外,前面问题的答案比这里给出的答案质量更高……我正要对您的答案进行投票,但其中有一个错误:
get
不返回queryset-它返回单个对象。正是
filter
返回
queryset
,正如您正确指出的,它是一个iterable。
Groups.objects.filter(user=1)
age = User.objects.get(name="Ryan").age
ages = User.Objects.filter(name="ryan").values('age')
for user_age in users:
    print(user_age)