You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Django模型对象获取去重的指定列数据?

Django模型高效获取去重name字段值的方法

直接利用Django ORM的数据库层面去重能力,比Python循环处理高效得多,推荐两种实现方式:

通用兼容方案(支持所有数据库)

使用values_list()配合distinct(),让数据库直接返回去重后的name值:

unique_names = list(MyMenu.objects.values_list('name', flat=True).distinct())
  • values_list('name', flat=True):指定只获取name字段的值,且返回单个值的迭代器而非元组
  • distinct():在数据库层面执行去重操作,避免把全量数据拉取到Python中再处理
    最终得到的unique_names就是你需要的["hiro","fusa","yoshi","yoshio"]格式。

针对PostgreSQL的优化方案(Django 2.0+)

如果你的项目使用PostgreSQL,可以通过指定字段的distinct()进一步精准控制:

unique_names = list(MyMenu.objects.order_by('name').distinct('name').values_list('name', flat=True))

注意:这种方式要求先对name字段排序,且仅PostgreSQL支持按指定字段去重。

优势说明

这两种方法都是让数据库完成去重逻辑,数据库在处理这类操作时有成熟的优化机制,相比Python循环遍历去重,能大幅减少内存占用和处理时间,数据量越大优势越明显。

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:53:11