Django 如何在orm中按查询对结果进行分组
我可以根据用户模型中的字段对结果进行分组吗 型号.pyDjango 如何在orm中按查询对结果进行分组,django,django-models,orm,django-rest-framework,Django,Django Models,Orm,Django Rest Framework,我可以根据用户模型中的字段对结果进行分组吗 型号.py class User(AbstractUser): USERTYPE = (('1','type_1'),('2','type_2'),....) user_type = models.CharField(max_length=2,choices=USERTYPE) ..... User.object.all().values('first_name','last_name') 视图.py class User(
class User(AbstractUser):
USERTYPE = (('1','type_1'),('2','type_2'),....)
user_type = models.CharField(max_length=2,choices=USERTYPE)
.....
User.object.all().values('first_name','last_name')
视图.py
class User(AbstractUser):
USERTYPE = (('1','type_1'),('2','type_2'),....)
user_type = models.CharField(max_length=2,choices=USERTYPE)
.....
User.object.all().values('first_name','last_name')
如何仅使用django ORM查询获取groupby的所有用户数据?请键入以下格式
{
"type_1":[
{
"first_name":"abc",
"last_name":"xzy"
},
{
"first_name":"abcd",
"last_name":"wxzy"
}
],
"type_2":[
{
"first_name":"abcdd",
"last_name":"xzddy"
},
{
"first_name":"absdcd",
"last_name":"wxsdzy"
}
]
}
您不能在查询本身中这样做。但您可以对查询进行一些后处理:
from itertools import groupby
from operator import methodcaller
qs = User.object.order_by('user_type')
result = {
k: [{ 'first_name': u.first_name, 'last_name': u.last_name } for u in us]
for k, us in groupby(qs, methodcaller('get_user_type_display'))
}
因此,我们在这里按user\u type
字段对查询集进行排序,然后让groupby(…)
根据get\u user\u type\u display()
方法进行分组。然后我们可以为每个这样的组创建子列表