📜  django queryset 唯一值的平均值 - Python (1)

📅  最后修改于: 2023-12-03 14:40:46.528000             🧑  作者: Mango

Django Queryset 唯一值的平均值

在 Django 中,使用 Queryset 可以轻松地从数据库中检索、过滤和排序对象。有时需要从查询结果中获取唯一值的平均值。

1. 获取唯一值

可以使用 distinct() 可以获取唯一值,例如:

from myapp.models import MyModel

qs = MyModel.objects.values_list('field1', flat=True).distinct()

以上代码将返回一个包含 field1 值的列表,这些值是唯一的。

2. 获取平均值

可以使用 aggregate() 方法计算唯一值的平均值,例如:

from myapp.models import MyModel

avg_value = MyModel.objects.values_list('field1', flat=True).distinct().aggregate(avg_value=Avg('field1'))['avg_value']

以上代码将返回唯一值 field1 的平均值,即 avg_value

3. 完整代码
from django.db.models import Avg
from myapp.models import MyModel

unique_values = MyModel.objects.values_list('field1', flat=True).distinct()
avg_value = unique_values.aggregate(avg_value=Avg('field1'))['avg_value']

以上代码将返回唯一值 field1 的列表和平均值 avg_value

4. 总结

使用 distinct() 方法可以获取唯一值,使用 aggregate() 方法可以计算唯一值的平均值。以上代码可以用于 Django 中的任何 Model 中。