Django order_by('?')过滤了distinct()

时间:2018-01-08 05:53:16

标签: django postgresql

我想检索唯一的外键实例并随机排序 但是,当我想使用order_by('?')

时,我收到了一个错误

我的查询是这样的:

qs=Course.objects.distinct('courseschedule__object_id').order_by('courseschedule__object_id')

这个查询工作正常,但是现在我想随机订购(每次都得到随机结果),我试试这个

qs=qs.order_by('?')

我收到了这个错误:

  

django.db.utils.ProgrammingError:SELECT DISTINCT ON表达式必须与初始ORDER BY表达式匹配

知道怎么解决吗?我的数据库是Postgres,我不想做rawSQL ....我非常感谢你们帮助!!!!

1 个答案:

答案 0 :(得分:0)

首先,根据querysetsDjango,使用数据库的随机顺序既昂贵又缓慢。其次,在我看来,而不是使用数据库返回一个随机顺序从数据库获取您的查询没有明确(因为它也可能很慢),使用python方法洗牌查询,例如:randomOrder并制作一组() 然后 。这样你就不会使用数据库来处理你的东西,而是使用纯python代码。