Django在过滤器集中获得最新的3个结果

时间:2015-05-07 12:15:07

标签: python django

我正在尝试创建执行以下操作的查询:

  • 仅列出过去4个月的结果 - 检查
  • 删除最佳时间为0的结果 - 检查
  • 列出独特的俱乐部和团队 - 检查
  • 从套装中获得最佳时间 - 检查
  • 将俱乐部和团队整理好 - 检查

我现在需要的唯一条件是:

  • 如果某个俱乐部或团队列出超过3次(在获得最佳时间之前),请仅使用3个最新结果。

-

place = Placing.objects \
.filter(event_date__gte=start_date) \
.filter(best_time__gt=0) \
.values_list('club_name','team_name') \
.annotate(Min('best_time')) \
.order_by('club_name','team_name')

1 个答案:

答案 0 :(得分:2)

您需要LIMIT您的查询(通过Python切片),这意味着您还必须单独查询每个团队,因为我不认为{{{ 1}}子句可以多次表达 - 从正面看,你可以LIMIT

如果您需要aggregate(Min('best_time'))QuerySet个对象,则可以构建一个与Placing运算符连接结果的对象。

另外,俱乐部和团队之间的区别是什么?

编辑:也许是这样的

|