Django - 在order_by中选择语句

时间:2014-05-23 22:04:24

标签: django django-views

这是我的查询集:

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)']

我可以在order_by中使用SELECT语句吗?如果不是这种情况的任何解决方案。

1 个答案:

答案 0 :(得分: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')