django 如何在单个字典中获取状态计数
django how to get status count in single dictionary
In my user table i have many user type and status (pending = 0,1 =
approved). i am getting the count like.
user = {}
user['pending'] = User.objects.filter(type=3,status='0').count()
user['approved'] = User.objects.filter(type=3,status='2').count()
user['blocked'] = User.objects.filter(type=3,status='4').count()
print(user)
Using this i am getting result in this way like :
{'pending': 0, 'approved': 1, 'blocked': 0}
what actually i need is i want this same result through a single query can any one please help me related this ?? thanks in advance
from django.db.models import Count
result = User.objects.filter(type=3, status__in=[0, 2, 4]).values('status')
.order_by('status')
.annotate(count=Count('status'))
# create dict
result_dict = {r.status : r.count for r in result}
# rename keys of dict
new_keys= {'0':'pending', '2':'approved', '4':'blocked'}
result_with_new_keys = {new_keys[key] : value for key, value in result.items()}
result
将是具有 status
和 count
字段的 QuerySet
。
然后,我们从 QuerySet
创建一个 dict
,然后我们重命名键以获得所需的字典。
In my user table i have many user type and status (pending = 0,1 = approved). i am getting the count like.
user = {}
user['pending'] = User.objects.filter(type=3,status='0').count()
user['approved'] = User.objects.filter(type=3,status='2').count()
user['blocked'] = User.objects.filter(type=3,status='4').count()
print(user)
Using this i am getting result in this way like : {'pending': 0, 'approved': 1, 'blocked': 0} what actually i need is i want this same result through a single query can any one please help me related this ?? thanks in advance
from django.db.models import Count
result = User.objects.filter(type=3, status__in=[0, 2, 4]).values('status')
.order_by('status')
.annotate(count=Count('status'))
# create dict
result_dict = {r.status : r.count for r in result}
# rename keys of dict
new_keys= {'0':'pending', '2':'approved', '4':'blocked'}
result_with_new_keys = {new_keys[key] : value for key, value in result.items()}
result
将是具有 status
和 count
字段的 QuerySet
。
然后,我们从 QuerySet
创建一个 dict
,然后我们重命名键以获得所需的字典。