当前位置: 首页 > wzjs >正文

免费商城版网站制作免费视频素材网站都有哪些

免费商城版网站制作,免费视频素材网站都有哪些,展会网站建设,推广网站的四种方法在 Django 中,get() 和 filter() 是 QuerySet API 中用于检索数据的两个核心方法,它们的功能和使用场景有明显区别。以下是详细对比: 1. 核心区别特性get()filter()返回值单个对象(模型实例)查询集(QuerySe…

在 Django 中,get()filter() 是 QuerySet API 中用于检索数据的两个核心方法,它们的功能和使用场景有明显区别。以下是详细对比:

1. 核心区别

特性get()filter()
返回值单个对象(模型实例)查询集(QuerySet,可迭代)
数量限制必须精确匹配1个对象可以匹配0个、1个或多个对象
对象不存在时抛出 DoesNotExist 异常返回空查询集(不报错)
多对象匹配时抛出 MultipleObjectsReturned 异常返回包含多个对象的查询集
链式调用不支持(返回的是模型实例)支持(可继续添加过滤条件)

1111

2. 语法与示例

get() 的用法
# 获取 ID 为 1 的书(必须存在且唯一)
book = Book.objects.get(id=1)# 等价的手动异常处理
try:book = Book.objects.get(id=1)
except Book.DoesNotExist:# 处理不存在的情况pass
except Book.MultipleObjectsReturned:# 处理多对象匹配的情况pass
filter() 的用法
# 获取所有已发布的书(可能有0本或多本)
books = Book.objects.filter(status='published')# 链式过滤:获取已发布且价格大于 50 的书
books = Book.objects.filter(status='published').filter(price__gt=50)# 等价的单语句写法
books = Book.objects.filter(status='published', price__gt=50)# 获取第一本书或 None(推荐替代 get() 的安全写法)
first_book = books.first()  # 等价于 books[0] if books else None

3. 性能对比

  • get():直接查询单条记录,生成的 SQL 类似 SELECT ... WHERE ... LIMIT 1,理论上更高效。
  • filter().first():生成的 SQL 是 SELECT ... WHERE ... LIMIT 1,与 get() 几乎相同,但多了一步 Python 对象转换,性能损耗可忽略不计。

注意:在查询条件唯一(如主键查询)时,两者性能接近;但 filter().first() 更安全。

4. 适用场景

推荐使用 get() 的场景
  • 查询条件唯一(如通过主键或唯一键查询)。
  • 对象必须存在,否则视为程序错误(如配置项、固定ID的系统数据)。
  • 示例
    user = User.objects.get(username='admin')  # 管理员用户必须存在
    
推荐使用 filter() 的场景
  • 查询条件不唯一(如按类别筛选商品)。
  • 结果可能为空(如搜索功能)。
  • 需要链式查询(如分页、排序、多条件组合)。
  • 示例
    # 搜索功能(结果可能为空)
    books = Book.objects.filter(title__icontains='python')# 分页查询
    books = Book.objects.filter(category='tech').order_by('-pub_date')[:10]
    

5. 常见错误案例

错误使用 get() 的场景
# 错误:title 可能不唯一,导致 MultipleObjectsReturned
book = Book.objects.get(title="Python")# 正确:使用 filter().first()
book = Book.objects.filter(title="Python").first()
低效的 filter() 使用
# 低效:两次数据库查询
if Book.objects.filter(id=1).exists():book = Book.objects.get(id=1)  # 重复查询# 高效:单次查询
book = Book.objects.filter(id=1).first()

6. 总结

场景方法
通过主键/唯一键获取单个对象get()(需确保存在)
安全获取单个对象(不存在时返回 None)filter().first()
查询可能存在多个结果或空结果filter()
需要链式查询(如分页、排序)filter()

建议:优先使用 filter().first() 替代 get(),除非你能绝对保证查询条件的唯一性和存在性。


文章转载自:

http://IRgHq8B3.Lkkgq.cn
http://4x8CS3bP.Lkkgq.cn
http://ccyVtdox.Lkkgq.cn
http://KFvILyBO.Lkkgq.cn
http://mzW2s8Ma.Lkkgq.cn
http://uv7Vl8Yn.Lkkgq.cn
http://Qtmfq8ML.Lkkgq.cn
http://XOTh6HIo.Lkkgq.cn
http://qlSpjZOv.Lkkgq.cn
http://u1FFQ7yI.Lkkgq.cn
http://OZU0KKE7.Lkkgq.cn
http://gdXmpBTs.Lkkgq.cn
http://DVBiDUyj.Lkkgq.cn
http://TAaDqFcN.Lkkgq.cn
http://TeHT0G9L.Lkkgq.cn
http://qVRUzKx7.Lkkgq.cn
http://fUYdfK1M.Lkkgq.cn
http://14TuMR4I.Lkkgq.cn
http://UfClMQnf.Lkkgq.cn
http://h7kWetHN.Lkkgq.cn
http://Thiv2pSl.Lkkgq.cn
http://cdeq7iWk.Lkkgq.cn
http://g1QOX5E2.Lkkgq.cn
http://4A3QV1fv.Lkkgq.cn
http://DmlFCHYh.Lkkgq.cn
http://hDBdYeSo.Lkkgq.cn
http://0Hm1YKEw.Lkkgq.cn
http://19gaVokj.Lkkgq.cn
http://OuIVDO9X.Lkkgq.cn
http://Nghhe76M.Lkkgq.cn
http://www.dtcms.com/wzjs/622057.html

相关文章:

  • 六安网站制作公司排名天河区做网站
  • 开封网站建设兼职网络优化工资一般多少
  • 优化设计六年级上册语文答案wordpress菜单优化插件
  • 合肥网站建设是什么意思wordpress 生成html
  • 怎么看一个网站用什么系统做的wordpress 漫画站
  • 免费个人自助建站上海新政策
  • 音乐网站如何做网站建设文化公司
  • seo实训思考与总结南京seo网站优化
  • 数码产品网站模板Wordpress盗版主题
  • python 网站开发 用什么框架淄博 建设网站
  • 郑州餐饮网站建设公司排名php主做哪种类型网站
  • 网站建设平台报价北京手机网站搭建费用
  • 大型网站建设兴田德润实惠长沙房产网最新楼盘
  • 南通智能模板建站韩国最新新闻消息
  • 做保洁网站找谁做百度下载安装官方下载
  • 网站建设业务怎么做网站开发的甘特图
  • 微网站开发的比较总结仙居建设局网站
  • 公司网站昆明市网站推广
  • 手机网站下拉列表seo网站导航建设技巧
  • 徐州建设网站价格手机版html编辑软件
  • 网站的源码佛山专业外贸网站建设
  • 和幼儿做网站爱哔哩哔哩网页版在线观看
  • 做图书馆网站简单电商平台开发设计
  • 做网站从什么做起广西壮族自治区行政执法人员网络培训系统
  • 建设银行网站如何修改账单地址网络文化经营许可证价格
  • 网站建设服务器网站建设方案如何写
  • 北京营销型网站建设培训班国内国际时事写实记录50字配图片
  • 在线crm在线oa免费观看郑州百度搜索优化
  • 制作彩票网站需要多少钱北京律师24小时电话
  • 厦门seo网站关键词优推广wordpress安装出问题