Fra*_*Joe 2 django django-models
我有一个以“疾病”作为领域之一的患者模型。我想计算所有患者对象中的前 5 种疾病,并返回每个对象的计数。我怎么能那样做?
尝试以下查询:
from django.db.models import Count
Patient.objects.values('disease').order_by().annotate(Count('disease'))
Run Code Online (Sandbox Code Playgroud)
如果您的患者表中有以下数据,
+---------+
| disease |
+---------+
| A |
| B |
| A |
| C |
| A |
| A |
| C |
+---------+
Run Code Online (Sandbox Code Playgroud)
输出将是:-
<QuerySet [{'disease': 'A', 'disease__count': 4}, {'disease': 'B','disease__count': 1}, {'disease': 'C', 'disease__count': 2}]>
Run Code Online (Sandbox Code Playgroud)
有很多方法可以从这个输出中找到最大值。
from django.db.models import Count
from django.db.models import Max
Patient.objects.values('disease').order_by().annotate(disease_count=Count('disease')).aggregate(maxval=Max('disease_count'))
Run Code Online (Sandbox Code Playgroud)
输出将是:- {'maxval': 4}
from django.db.models import Count
query_result = Patient.objects.values('disease').order_by().annotate(disease_count=Count('disease'))
maxval = max(query_result, key=lambda x:x['disease_count'])
Run Code Online (Sandbox Code Playgroud)
输出将是:- {'disease': 'A', 'disease_count': 4}
希望有帮助!
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |