Django 里 QuerySet 的 get 和 filter 方法的区别?

(1) 输入参数

get 的参数只能是 model 中定义的那些字段,只支持严格匹配。filter 的参数可以是字段,也可以是扩展的 where 查询关键字,如 in,like 等。

(2) 返回值

get 返回值是一个定义的 model 对象。filter 返回值是一个新的 QuerySet 对象,然后可以对 QuerySet 在进行查询返回新的 QuerySet 对象,支持链式操作,QuerySet 一个集合对象,可使用迭代或者遍历,切片等,但是不等于 list 类型(使用一定要注意)。

(3) 异常

get 只有一条记录返回的时候才正常,也就说明 get 的查询字段必须是主键或者唯一约束的字段。当返回多条记录或者是没有找到记录的时候都会抛出异常 filter 有没有匹配的记录都可以

发表评论

后才能评论