如何用Django ORM获取user_info表中所有不重复的name值?
获取Django ORM中不重复的name字段值
嗨,很高兴能帮你解决这个问题!要实现和SELECT distinct(name) from user_info等价的Django ORM查询,其实很简单,ORM提供了直接对应的方法来处理去重和指定字段的需求。
针对你的user_info模型,这里有两种常用的实现方式:
方法1:返回单个值的列表(推荐,符合你要的"所有姓名"的直观结果)
使用values_list()配合distinct(),再加上flat=True参数,这样会直接返回一个包含所有不重复name的字符串列表:
unique_names = user_info.objects.values_list('name', flat=True).distinct()
这个查询对应的SQL就是你熟悉的SELECT DISTINCT name FROM user_info,返回的结果类似['Alex', 'Bob', 'Charlie'],非常方便直接使用。
方法2:返回字典列表
如果你需要保留字段名的键值对结构,可以用values()代替values_list():
unique_name_dicts = user_info.objects.values('name').distinct()
返回的结果是字典组成的列表,比如[{'name': 'Alex'}, {'name': 'Bob'}],适合需要明确字段名的场景。
小提醒
按照Django的命名惯例,模型类名应该采用驼峰式写法(比如UserInfo而非user_info),这样更符合社区规范,也能避免和其他变量名混淆哦~
内容的提问来源于stack exchange,提问作者Souvik Ray
相关产品推荐
相关产品推荐

