【发布时间】:2016-12-25 15:00:00
【问题描述】:
我有一个Donation 模型定义为:
Donation
project = models.ForeignKey(Project)
user = models.CharField()
每个用户可以多次向任何项目捐款,因此在 db 中我可以拥有以下内容:
Donation
-------------------
project | user
-------------------
1 | A
2 | A
3 | A
1 | B
2 | B
2 | C
现在,我需要计算每个用户的不同项目的平均值,在这种情况下,它将是:
A: 3
B: 2
C: 1
=> ( 3 + 2 + 1 ) / 3 = 2
到目前为止,我有以下内容:
distinct_pairs = Donation.objects.order_by('project')
.values('user', 'project')
.distinct()
这给了我一个 project/user 对的不同列表,我可以在 python 中使用。
我想知道是否有query-only 方法可以做到这一点?
我的设置:
- Django 1.8
- PostgreSQL
【问题讨论】:
-
只是想知道 - 为什么将用户设置为 char 字段而不是用户模型的外键?作为用户的字符字段听起来不像是最佳实践,imo
-
因为不是“真实”用户,主要是为了简化示例。
标签: python django postgresql django-models django-queryset