是否有更清晰/更好的方法按字段计算不同项目的数量?

时间:2012-07-20 11:00:30

标签: python django django-models

我希望编写一个泛型函数,给定一个queryset返回模型每列的不同字段数。

到目前为止我的功能是:

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

然而,这是相当hacky /丑陋/不清楚。我想知道是否有更简单/更清晰的方法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以将more than one聚合传递给.aggregate,这样您就可以减少对数据库的调用。 下面的代码是未经测试的,只能让我知道我的意思。

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