千家信息网

Django中get和filter方法有什么区别

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,Django中get和filter方法有什么区别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。getget 是获取一个对
千家信息网最后更新 2025年12月03日Django中get和filter方法有什么区别

Django中get和filter方法有什么区别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

get

get 是获取一个对象,有时会出现 DoesNotExist: User matching query does not exist 的情况。

我遇到的一种原因是:get 没获取到内容,因为数据库里 User 这张表没数据。

解决方法:在 User 表中填完相关数据,再使用如下代码。

# solution one: getprofile_mail = User.objects.get(uid=uid)print(profile_mail)if not profile_mail:    return Falseprint(profile_mail.mail)return JsonResponse(profile_mail.mail, safe=False)

profile_mail 获取到的是一个对象 Object,要想获取 mail 还需使用 .mail。

输出的内容如下:

User object (11)123@qq.com

这里还遇到一个错:In order to allow non-dict objects to be serialized set the safe parameter to False。

因为返回是 Json 数据,需要序列化,因此 return JsonResponse(profile_mail.mail, safe=False) 里要加一个 safe=False。

get 返回的是一个对象,只能返回一个,如果记录不存在的话,它会报错。

filter

当面对有多个对象的时候,就不能用 get 了,而应该用 filter。

解决方法:

# solution two: postprofile_mail = User.objects.filter(uid=uid)print(profile_mail)for i in profile_mail:    print(i.mail)    return JsonResponse(i.mail, safe=False)

得到的内容,filter 返回的是一个对象列表,如果记录不存在的话,它会返回 []。

输出的内容如下:

]>123@qq.com

filter 的 values 和 values_list

values(*fields)

返回一个 ValuesQuerySet(QuerySet 的一个子类),迭代时返回的是字典,表示一个对象,但不是模型实例对象。

profile_mail = User.objects.filter(uid=uid)print(profile_mail)profile_mail = User.objects.filter(uid=uid).values()print(profile_mail)

输出的内容如下:

]>

values() 接收可选的位置参数 *fields,它指定 SELECT 应该限制哪些字段。比如下面筛选 mail 信息:

profile_mail = User.objects.filter(uid=uid).values('mail')print(profile_mail)

输出的内容如下:

values_list(*fields, flat=False)

返回的是元组而不是字典。每个元组包含传递给 values_list() 调用的字段的值,所以第一个元素为第一个字段,以此类推。

profile_mail = User.objects.filter(uid=uid).values_list('uid','mail')print(profile_mail)

输出的内容如下:

如果只传递一个字段,你还可以传递 flat 参数。如果为 True,它表示返回的结果为单个值而不是元组。

profile_mail = User.objects.filter(uid=uid).values_list('mail', flat=True)print(profile_mail)

输出的内容如下:

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容 对象 输出 字段 数据 方法 参数 字典 帮助 清楚 以此类推 代码 位置 信息 元素 单个 原因 多个 子类 实例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东网络软件开发计划 网络技术与系统管理课程 数据库锁功能 工商银行上海软件开发中心 张晔 网络安全郑州洪水 手机病毒库数据库查询 数据库常用的数据定义语言 小学网络安全教育新闻中央台 服务器安全证书更新 天堂2单机服务器 旅店业网络安全 软件开发面试问题应届生 数据库技术及应用知识点 郑州app软件开发哪里有 求生之路怎么退出别人的服务器 小米放大器怎么设置网络安全 我的世界星世界斗罗服务器 法律禁止的危害网络安全的行为 学科网数据库试用2022 数据库自定义函数查询东西 关系数据库基本关系有哪些 如何查看服务器的用户的用户组 战地4怎么筛选服务器 论文数据库表能分在两页上吗 计算机考试数据库习题 移动一打电话就无服务器 软件开发的底层数据处理 财务管理软件开发项目 亚洲人脸数据库云盘 数据库课程设计数据字典
0