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 方法每次执行都是直接查询数据库的.
来源: http://www.bubuko.com/infodetail-3302796.html