2

与えられたクエリセットがモデルの各列の個別のフィールドの数を返す汎用関数を作成したいと考えています。

私がこれまで持っている機能は次のとおりです。

[queryset.aggregate(Count(x, distinct=True)) for x in [x.get_attname() for x in queryset.model._meta._fields()]]

ただし、これはかなりハック/醜い/不明確です。これを行うためのより簡単で明確な方法があるかどうか疑問に思っていますか?

ありがとう。

4

1 に答える 1

0

複数の集計を に渡すことができる.aggregateため、データベースへの呼び出しを減らすことができます。以下のコードはテストされておらず、私の言いたいことを理解するためだけのものです。

args = [Count(x.get_attname(), distinct=True)) for x in queryset.model._meta._fields()]
queryset.aggregate(*args)
于 2012-07-23T13:35:30.500 に答える