Django过滤后如何去除QuerySet重复值?实现结果唯一性
给Django查询的sysname去重
你只需要在原查询的末尾加上.distinct()方法,就能让每个sysname仅出现一次:
修改后的查询语句:
SystemsV2.objects.filter(Q(sysname = 'DC_BW_SBX_S4H') | Q(sysname='DC_BW_DEV_S4H')).values('sysname').distinct()
为什么这样有效?
.values('sysname')会返回包含sysname字段的字典集合.distinct()会让数据库返回唯一的结果行,因为你已经指定只提取sysname字段,数据库会自动按这个字段去重,最终得到每个sysname的唯一记录
额外提示
如果用的是PostgreSQL,还可以明确指定去重字段(效果和上面一致,因为只选了一个字段):
SystemsV2.objects.filter(Q(sysname = 'DC_BW_SBX_S4H') | Q(sysname='DC_BW_DEV_S4H')).values('sysname').distinct('sysname')
MySQL下不需要指定字段,直接用.distinct()就够了。
内容的提问来源于stack exchange,提问作者Abhinav
相关产品推荐
相关产品推荐

