Django中get和filter区别

时间:2022-05-18 16:14:22 类型:python
字号:    

  get和filter()的区别。

  1、get

  输入参数:get的参数只能是model中定义的哪些字段,只支持严格匹配。

  Entry.objects.get(id='foo') # raises Entry.DoesNotExist

  返回参数:get 返回值是一个定义的model对象,只有一条记录返回的时候才正常,也就说明get的查询字段必须是主键或者唯一约束的字段。当返回多条记录或者是没有找到记录的时候都会抛出异常

       捕获异常实例:

try:
   result = sorts.objects.get(parentid=parentid, title=title)
   if result:
      return HttpResponse("<script>alert('同级类别名称已经存在');history.back();</script>")
except  sorts.DoesNotExist:
   print("tt")

  2、filter

  输入参数:filter的参数可以是字段也可以是扩展的where查询关键字,如in,like,返回QuerySet包含与给定查找参数匹配的新对象。

  返回参数:filter返回QuerySet对象,有没有匹配的记录都可以。

  filter有缓存数据的功能,第一次查询数据库并生成缓存,下次再调用filter方法的话,直接取得缓存的数据,get方法每次执行都是直接查询数据库的。


<