Django中get和filter区别

get和filter()的区别。

1、get

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

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

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

2、filter

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

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

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

猜你喜欢

转载自www.cnblogs.com/gentlemanhai/p/11924931.html