2014-05-23 27 views
1

select語句這是我的查詢集:Django的 - 裏面ORDER_BY

most_event_wins = UserEvent.objects.filter(position=1)\ 
     .values('user', 'user__first_name', 'user__last_name').annotate(wins=Count('user'))\ 
     .order_by('-wins', '(select max(created) as d from users_userevent as s ' 
          'where s.user_id=users_userevent.user_id and position=1)') 

,我發現了以下錯誤:

Invalid order_by arguments: ['(select max(created) as d from users_userevent as s where s.user_id=users_userevent.user_id and position=1)'] 

我可以使用SELECT語句中的ORDER_BY裏面?如果沒有任何解決方案的情況下。

回答

0

不,您不能在order_by中使用select語句。是否有一個原因,你不使用多個註釋來完成此?

most_event_wins = UserEvent.objects.filter(position=1)\ 
    .values('user', 'user__first_name', 'user__last_name')\ 
    .annotate(wins=Count('user')).annotate(max_created=Max('created'))\ 
    .order_by('-wins', 'max_created')