order_by不适用于__in

时间:2017-01-18 14:05:22

标签: django django-rest-framework

我正在我的网络应用程序中实现音频播放列表系统,我使用DRF作为API,并且我一直在尝试按索引对播放列表项目进行排序。

playlist = self.get_playlist()

qs = playlist.items.order_by('index')
qs = Track.objects.filter(playlist_items__in=qs)

但是,这不起作用,只要使用__in查询,它就会按跟踪pk排序,而不是播放列表项的index

1 个答案:

答案 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;
相关问题