gpt4 book ai didi

python - 删除查询集中的重复项

转载 作者:行者123 更新时间:2023-12-01 01:31:34 25 4
gpt4 key购买 nike

我有一个如下所示的查询集,它描述了专辑以及与这些专辑相关的歌曲。模型名称为UserSongs

<QuerySet [{'id': 1, 'album': 'Sri', 'song': 'in the end','release': 2017},
{'id': 2, 'album': 'Adi', 'song': 'cafe mocha','release': 2016},
{'id': 3, 'album': 'Shr', 'song': 'smooth criminal','release': 2016},
{'id': 4, 'album': 'Mouse', 'song': 'trooper','release': 2017},
{'id': 5, 'album': 'Mouse', 'song': 'my mobile','release': 2015},
{'id': 6, 'album': 'Sri', 'song': 'my office','release': 2018},
{'id': 7, 'album': 'Sri', 'song': 'null','release': null},
{'id': 8, 'album': 'Mouse', 'song': 'null','release': null}]>

在后端,我将查询集转换为列表。请参阅下面的代码:

albums_songs = UserSongs.objects.filter(album__in = 
['Sri','Mouse']).values('albums','songs')
list_albums_songs = list(albums_songs)

我正在将此列表发送到前端,以便在表格中显示它。SriMouse 有多个条目,因为他们发布了多首歌曲。在前端,这些歌曲显示在一个表格中,其中专辑和歌曲作为条目。查询集中的每一项都显示为一行。就像下面这个。

Album   Songs
Sri in the end
Adi cafe mocha
Adi null
Shr smooth criminal
Mouse trooper
Mouse my mobile
Sri my office
Sri null
Mouse null

但在表中,还会显示歌曲的 null 条目。我不想仅显示 SriMouse 的空条目。我想显示 song=null doe Adi。我可以在转换为列表并迭代列表后将其删除。但这是昂贵的。我相信我们可以在 django 查询本身中做到这一点。例如,如果专辑是 Sri 或 Mouse,则检查歌曲 = null 并且不会获取该条目。

或者在获取查询集之后,在转换为列表之前,我们可以从查询集中删除这些项目吗?

最佳答案

您可以使用isnull过滤器:

albums_songs = UserSongs.objects.filter(album__in=['Sri','Mouse'], songs__isnull=False).values('albums','songs')

编辑:根据更新问题中的新要求,您应该使用 exclude 方法:

albums_songs = UserSongs.objects.exclude(album__in=['Sri','Mouse'], songs__isnull=True).values('albums','songs')

关于python - 删除查询集中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52812416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com