Django 框架get()和filter()返回值的区别
先上官方文档!
filter(**kwargs)
返回包含与给定查找参数匹配的对象的新查询集。
简单来说,返回一个又对象组成的查询集合
get(**kwargs)
返回与给定查找参数匹配的对象,该对象应采用字段查找中描述的格式。
例子
例如在Model中有一个Order类,包含一个id字段,输入 id 为2019 字段的 id
1.get()方法
orders = Orders.objects.get(id=20190003)
print(order)
先查看orders是什么,结果为
Orders object
按照官方文档所说的,他是一个对象没错,可以直接用点操作进行字段取值
print(order.id)
结果就是20190003
2.filter() 方法
orders = Orders.objects.filter(id=20190003)
print(order)
先查看orders是什么
<QuerySet [<Orders:Orders object>]>
我认为 前面的QuerySet 是告诉我们这个是一个查询集,真正的查询集内容是列表[]
里面的东西,<>表示查询集的范围。[]
中的Orders同理。这个时候我们发现[]
中的东西就是get()方法所获得东西,因此只需要取order[0]
即可,打印order[0]
可以看见
Orders object
因此,order[0].id
.也就能获得20190003
备注: 如果filter查询返回的结果多条,结果为
<QuerySet [<Orders:Orders object>,<Orders:Orders object>,<Orders:Orders object>]>
本质上看起来为一个列表