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

Python 是否有更清晰/更好的方法按字段计算不同项目的数量?,python,django,django-models,Python,Django,Django Models,我希望编写一个通用函数,在给定queryset的情况下,该函数返回模型每列的不同字段数 到目前为止,我的职能是: [queryset.model.\u meta.\u fields()][x.get\u attname()中x的[queryset.aggregate(Count(x,distinct=True)] 然而,这是相当粗糙/丑陋/不清楚的。我想知道是否有更简单/更清晰的方法 谢谢。您可以将聚合传递给.aggregate,这样可以减少对数据库的调用。 下面的代码未经测试,只能给出我的意思

我希望编写一个通用函数,在给定queryset的情况下,该函数返回模型每列的不同字段数

到目前为止,我的职能是:

[queryset.model.\u meta.\u fields()][x.get\u attname()中x的[queryset.aggregate(Count(x,distinct=True)]

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

谢谢。

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

args = [Count(x.get_attname(), distinct=True)) for x in queryset.model._meta._fields()]
queryset.aggregate(*args)
您可以将聚合传递给
.aggregate
,这样可以减少对数据库的调用。 下面的代码未经测试,只能给出我的意思

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

如果不进一步分析所使用的方法的作用:
[queryset.aggregate(Count(x.get\u attname(),distinct=True)),对于queryset.model.\u meta.\u fields()]
,它更短(更有效),尽管我不确定是否更清晰。我有点希望有一个
queryset.variance()
函数。这是可能的。我不知道
queryset
,我只是做了一个简单的Python优化。没有进一步分析所使用的方法做了什么:
[queryset.aggregate(Count(x.get_attname(),distinct=True)]在queryset.model中为x计算。_meta.\u fields()]
更短(更有效),尽管我不确定是否更清晰。我有点希望有一个
queryset.variance()
函数。这是可能的。我不知道
queryset
,我只是做了一个简单的Python优化。