我正在我的网络应用程序中实现音频播放列表系统,我使用DRF作为API,并且我一直在尝试按索引对播放列表项目进行排序。
playlist = self.get_playlist()
qs = playlist.items.order_by('index')
qs = Track.objects.filter(playlist_items__in=qs)
但是,这不起作用,只要使用__in
查询,它就会按跟踪pk
排序,而不是播放列表项的index
。
答案 0 :(得分:3)
你的方法没有意义。 order_by
上的结果查询集应用Track
,而不是条件。你应该做
Track.objects.filter(playlist_items__in=qs).order_by('playlist_items__index')
详细说明,__in
语句在sql中被翻译为IN
语句,如
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
但是sql使用ORDER BY
语句对结果进行排序,例如:
SELECT column_name, column_name
FROM table_name
ORDER BY column_name ASC|DESC, column_name ASC|DESC;