0

我有一个模型 Foo,它与模型 Bar 和模型 Baz 有 m2m 关系,所以它看起来有点像这样:

Bar(0..*)----(1..*)Foo(1..*)----(0..*)Baz

我想要做的是通过关联的 Bars 和 Bazs 的总和来获得前 n 个 Foos。

这是我到目前为止得到的:

Foo.objects.all() \
    .annotate(count_bar=(Count('bar')) \
    .annotate(count_baz=(Count('baz').extra(
        'select'={'total' : 'count_bar + count_baz'},
        'order_by'=('-total',)
    )

QuerySet 看起来不错,直到extra调用。然后我得到Unable to get repr for QuerySet. 如果可以在通话中使用,
这将是一件轻而易举的事。有什么 ORM 友好的方式可以解决这个问题吗?F()annotate

4

1 回答 1

0

使用计数检索所有 Foos 并sorted使用 lambda 作为键对它们进行排序。

于 2013-06-02T01:06:46.830 回答