首先说一些注意点
- get()方法是不返回QuerySets的方法
- 不返回QuerySets的方法,不使用缓存,它们每次被调用都会去查询数据库
- 语法:get(**kwargs)
- 功能:返回与给定查找参数匹配的对象。
- 注意点:填写的参数对象必须是唯一的。例如主键或者唯一约束中的字段。
- 🌰1
# 查询Entry数据库表中id=1的数据。返回也是返回这个数据的对象
Entry.objects.get(id=1)
Entry.objects.get(blog=blog, entry_number=1)
- 🌰2:如果希望查询集已经返回1行,可以使用get()不带任何参数的该行的对象
# 先用filter()找到id为1的值,然后再用get()方法获取具体的对象。
# filter是获取一个对象集,get是获取某个具体的对象
Entry.objects.filter(pk=1).get()
- 如果get()找不到任何对象,会引发Model.DoesNotExist异常
Entry.objects.get(id=-999) # raises Entry.DoesNotExist
- 如果get()发现多个对象,会引发Model.MultipleObjectsReturned异常
Entry.objects.get(name='A Duplicated Name') # raises Entry.MultipleObjectsReturned