django查询 model中get和filter的区别
之前没怎么用过django的orm,这次用了下,看了下这两个的具体区别
get查询
get查询是一定能查询到的数据且只能查到这一个,如果查询不到或者查询到多个都会返回报错
equity_info = EquityInfo.objects.get(code=single_equity_info['code'])
get方法的文档地址: https://docs.djangoproject.com/en/4.0/ref/models/querysets/#get
如果get()
没有找到任何对象,则会引发Model.DoesNotExist
异常
如果get()
找到多个对象,则会引发Model.MultipleObjectsReturned
异常
注:使用get的时候,一定要确保查询的数据具有唯一性
filter查询
查询到的是列表,如果没查询到,也会给个空列表
返回一个新QuerySet
的包含与给定查找参数匹配的对象。
equity_info = EquityInfo.objects.filter(code=single_equity_info['code'])
# 取第一个查询对象
first = equity_info[0]
filter方法的文档地址: https://docs.djangoproject.com/en/4.0/ref/models/querysets/#filter